【问题标题】:How can I get the File to be filtered from getFiles() in Visual C#如何在 Visual C# 中从 getFiles() 中获取要过滤的文件
【发布时间】:2020-05-29 07:23:50
【问题描述】:

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

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

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

我会发布我的项目文件here,您可以查看它以查看代码行。

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

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

我找不到过滤文件类型的方法,这些文件类型最初已经存储到变量 string[] _fileArray

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

【问题讨论】:

    标签: c# .net-3.5


    【解决方案1】:

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

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

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

    var files = Directory.EnumerateFiles(fbd.SelectedPath, "*.*", SearchOption.AllDirectories);
    
    foreach(var file in files)
    {
        // do your thing...
    }
    

    【讨论】:

      【解决方案2】:

      如果我理解正确,您正在寻找过滤某些扩展名(.jpg、.gif 等)的文件。

      如果是这样,试试这个答案: Directory.GetFiles(dir, "*.jpg", SearchOption.AllDirectories)

      在这里找到: https://stackoverflow.com/a/13301082/10880378

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-15
        • 2019-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多