定义一个初始化炮号方法
public void InitializeSaveIndex()
{
string saveDirectory = myConfig.savePath1; // 修改为实际保存目录
string saveFolder = saveDirectory;
if (!Directory.Exists(saveFolder))
{
saveIndex = 1;
return;
}
var files = Directory.GetFiles(saveFolder, "*.jpg");
int maxIndex = 0;
foreach (var file in files)
{
var filename = System.IO.Path.GetFileName(file);
var match = nameRegex.Match(filename);
if (match.Success && int.TryParse(match.Groups[1].Value, out int idx))
{
if (idx > maxIndex) maxIndex = idx;
}
}
saveIndex = maxIndex + 1;
Console.WriteLine($"初始化保存序号,下一张图片序号为 {saveIndex}");
}
读取文件中上次保存的炮号,找到最新的炮号,初始化本次的saveindex
string filename1 = System.IO.Path.Combine(saveFolder, $"{saveIndex}.jpg");
saveIndex++;
在保存图片时选择saveindex命名,并使saveindex加一,即可实现炮号功能
public void CleanupOldImages()
{
try
{
var files = Directory.GetFiles(myConfig.savePath1, "*.jpg");
// 解析文件名中的序号并排序
var indexed = files
.Select(f =>
{
var name = System.IO.Path.GetFileName(f);
var m = nameRegex.Match(name);
if (m.Success && int.TryParse(m.Groups[1].Value, out int idx))
return new { Index = idx, Path = f };
return null;
})
.Where(x => x != null)
.OrderBy(x => x.Index)
.ToList();
int excess = indexed.Count - maxKeep;
if (excess > 0)
{
// 删除最早的 excess 个文件
for (int i = 0; i < excess; i++)
{
var p = indexed[i].Path;
try
{
File.Delete(p);
//Console.WriteLine($"已删除旧图片:{p}");
}
catch (Exception ex)
{
Console.WriteLine($"删除文件失败 ({p}): {ex.Message}");
// 继续尝试删除其它文件
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"清理旧图片时出错: {ex.Message}");
}
}
还是和之前一样找到保存的文件夹并进行炮号排序,找出最新炮号后,根据你想保存的图片数量,用最新的炮号减去这个数量,把每个炮号和这个减去后得到的数值进行比较,小于这个数的就删去。
string[] filename2;
filename2 = new string[] { filename1 };
[Cfet2Status]
public string[] FullDataFilePaths
{
get { return filename2; }
}
创建一个CFET状态方法“FullDataFilePaths”,返回你的图片保存路径,运行另一个数据上传的thing,它会调用这个状态方法,取得你的保存路径,并将其中的数据上传。
本文章使用limfx的vscode插件快速发布