首页 > 解决方案 > 如何在 Visual C# 中从 getFiles() 中获取要过滤的文件

问题描述

它与互联网上发布的任何内容都不相似,我是这个项目的作者,这个项目是在大约 8 年前创建的。这个项目是我今天的硕士学位论文。我需要改进 GetFiles() 来过滤允许的文件类型,因为这个项目是为我的学校设计的。该软件的作用类似于 TinEye 或 Turnitin,通过检查要检查抄袭的图片的相似性。

这是我现在得到的错误。“内存不足”请查看链接中的图片

错误信息

我已经弄清楚了问题的原因,但我找不到解决方法。

我将在此处发布我的项目文件,您可以检查它以查看代码行。

在第88行的文件Form1.cs中,它说明了代码

_fileArray= System.IO.Directory.GetFiles(fbd.SelectedPath, "\*.\*",
                                  System.IO.SearchOption.AllDirectories);

我找不到一种方法来过滤最初存储到变量 string[] _fileArray的文件类型

我无法重做整个项目,因为我的时间很短,我将不胜感激任何修复错误的帮助。

标签: c#.net-3.5

解决方案


您应该使用Directory.EnumerateFiles()返回一个IEnumerable<string>惰性的。

不要将它们存储到数组或列表中。直接迭代就行了。

如果您需要在列表框/列表视图中显示它们并且迭代需要大量时间,请将文件名存储到文本文件中,这样可以更轻松、更快地加载。

var files = Directory.EnumerateFiles(fbd.SelectedPath, "*.*", SearchOption.AllDirectories);

foreach(var file in files)
{
    // do your thing...
}

推荐阅读