C# 我正在尝试维护图像数据库文件夹结构
我试图维护一个图像数据库,所以当我向特定文件夹添加新图像时,我的程序应该附加旧图像。另外,我试图通过使用字符串[]文件路径和以下代码来删除它们,但它不起作用 有人能帮我吗?我要做的只是,如果根文件夹(TrainedFaces)或子文件夹(/TrainedFaces/eladena/)中存在文件,避免它一次又一次地添加以前的图像…这就是我坚持的观点 e、 g:-如果我将face1、face2、face3添加到文件夹(/TrainedFaces/eladena/)。过了一段时间,我在侧根文件夹(/TrainedFaces/Linda/)中创建了另一个名为Linda的文件夹,并在/TrainedFaces/Linda/子文件夹中添加了face4、face5,我只需要face4、face5,但由于这个FOR循环,所以也需要添加face1、face2和face3 在/TrainedFaces/Linda/中有重复的/TrainedFaces/eladena/face1、face2、face3。我希望在不删除循环的情况下避免这个问题,如果有Lambda/linq表达式可以做到这一点C# 我正在尝试维护图像数据库文件夹结构,c#,C#,我试图维护一个图像数据库,所以当我向特定文件夹添加新图像时,我的程序应该附加旧图像。另外,我试图通过使用字符串[]文件路径和以下代码来删除它们,但它不起作用 有人能帮我吗?我要做的只是,如果根文件夹(TrainedFaces)或子文件夹(/TrainedFaces/eladena/)中存在文件,避免它一次又一次地添加以前的图像…这就是我坚持的观点 e、 g:-如果我将face1、face2、face3添加到文件夹(/TrainedFaces/eladena/)。过了一段时间,我在侧根文件夹(/T
for (int i = 1; i < trainingImages.ToArray().Length + 1; i++)
{
trainingImages.ToArray()[i - 1].Save(Application.StartupPath + "/TrainedFaces/eladena/face" + i + ".bmp");
File.AppendAllText(Application.StartupPath + "/TrainedFaces/TrainedLabels.txt", labels.ToArray()[i - 1] + "%");
}
MessageBox.Show(textBox1.Text + "´s face detected and added :)", "Training OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
string[] filePaths = Directory.GetFiles(Application.StartupPath + "/TrainedFaces/", "*.bmp");
foreach (string filePath in filePaths)
{
if (filePath.Contains(".bmp"))
File.Delete(filePath);
}
{
if (filePath.Contains(".bmp"))
File.Delete(filePath);
}
for(int i=1;i
您可以使用目录.GetFiles
和搜索选项
链接:http://msdn.microsoft.com/fr-fr/library/ms143316.aspx
您必须将SearchOption.AllDirectories
添加到方法GetFiles
链接:
我认为,根据已上载的文件添加唯一ID的要求可能无法很好地扩展。添加每个图像后,您将进行完整的目录扫描以查找最后一个图像。这是大量浪费的I/O操作,随着每个新映像的添加,这些操作会增加。相反,在某些持久性系统中使用递增值(通常是数据库记录的主键)。如果您对使用最少数量的外部系统感兴趣,请查看哪些系统会尽职尽责地跟踪最后增加的值。您是否探讨过使用
FileSystemWatcher
来维护内存中的图像列表的可能性?是的,如果我使用数据库来维护我的图像存储库,但在本例中,我使用一些HDD空间来存储裁剪图像,以进一步加载它们以识别算法用途。for(int i=1;i string[] filePaths = Directory.GetFiles(Path.Combine(Application.StartupPath,"TrainedFaces"), "*.bmp", SearchOption.AllDirectories);