c# - 如何在 Visual C# 中从 getFiles() 中获取要过滤的文件
问题描述
它与互联网上发布的任何内容都不相似,我是这个项目的作者,这个项目是在大约 8 年前创建的。这个项目是我今天的硕士学位论文。我需要改进 GetFiles() 来过滤允许的文件类型,因为这个项目是为我的学校设计的。该软件的作用类似于 TinEye 或 Turnitin,通过检查要检查抄袭的图片的相似性。
这是我现在得到的错误。“内存不足”请查看链接中的图片
我已经弄清楚了问题的原因,但我找不到解决方法。
我将在此处发布我的项目文件,您可以检查它以查看代码行。
在第88行的文件Form1.cs中,它说明了代码
_fileArray= System.IO.Directory.GetFiles(fbd.SelectedPath, "\*.\*",
System.IO.SearchOption.AllDirectories);
我找不到一种方法来过滤最初存储到变量 string[] _fileArray的文件类型
我无法重做整个项目,因为我的时间很短,我将不胜感激任何修复错误的帮助。
解决方案
您应该使用Directory.EnumerateFiles()返回一个IEnumerable<string>
惰性的。
不要将它们存储到数组或列表中。直接迭代就行了。
如果您需要在列表框/列表视图中显示它们并且迭代需要大量时间,请将文件名存储到文本文件中,这样可以更轻松、更快地加载。
var files = Directory.EnumerateFiles(fbd.SelectedPath, "*.*", SearchOption.AllDirectories);
foreach(var file in files)
{
// do your thing...
}
推荐阅读
- android - 如何从android中的图库中检索图片?
- unity3d - 如何在 Unity 上直播 360 度视频?
- android - 无法在 Android 上使用 Cloud Firestore 保存文档
- c# - ASP.NET 坏习惯:存储在 Session 中的不可序列化对象
- javascript - 如果电子表格中有图像,为什么 XMLHttpRequest 无法在 Firefox 中发送 excel 文件?
- python - .env 文件与 Python / Django 有什么关系?
- floating-point - 没有下溢和上溢,是否有任何2个数字,十进制形式的A < B,但转换为浮点后的A > B?
- php - Yii 2 不从 mysql 数据库中渲染表情符号
- javascript - 为什么即使函数无法调用,函数调用的参数部分中的表达式也会被评估?
- azure - 将现有应用的 B2C 本地帐户注册从电子邮件更改为用户名