Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我正在尝试维护图像数据库文件夹结构_C# - Fatal编程技术网

C# 我正在尝试维护图像数据库文件夹结构

C# 我正在尝试维护图像数据库文件夹结构,c#,C#,我试图维护一个图像数据库,所以当我向特定文件夹添加新图像时,我的程序应该附加旧图像。另外,我试图通过使用字符串[]文件路径和以下代码来删除它们,但它不起作用 有人能帮我吗?我要做的只是,如果根文件夹(TrainedFaces)或子文件夹(/TrainedFaces/eladena/)中存在文件,避免它一次又一次地添加以前的图像…这就是我坚持的观点 e、 g:-如果我将face1、face2、face3添加到文件夹(/TrainedFaces/eladena/)。过了一段时间,我在侧根文件夹(/T

我试图维护一个图像数据库,所以当我向特定文件夹添加新图像时,我的程序应该附加旧图像。另外,我试图通过使用字符串[]文件路径和以下代码来删除它们,但它不起作用

有人能帮我吗?我要做的只是,如果根文件夹(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表达式可以做到这一点

    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);