【问题标题】:How to continuously read files in a folder using C#?如何使用 C# 连续读取文件夹中的文件?
【发布时间】:2016-11-16 04:17:34
【问题描述】:

我想从本地驱动器上的文件夹中连续读取所有图像文件,然后在读取所有图像后进行一些处理并结束程序。图像编号不是连续的,它们是随机的,但是它们位于单个文件夹中。目前我的程序只能读取一个文件;见下面的代码

string imagePath = Path.Combine(Freconfig.GetSamplesFolder(), "24917324.jpg");

【问题讨论】:

  • 使用 Directory.GetFiles?
  • 听起来你只是想enumerate 目录中匹配*.jpg 的每个文件。

标签: c# .net


【解决方案1】:

使用 FileSystemWatcher https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = Freconfig.GetSamplesFolder();
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
       | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    watcher.Filter = "*.jpg";

    // Add event handlers.
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted += new FileSystemEventHandler(OnChanged);
    watcher.Renamed += new RenamedEventHandler(OnRenamed);

    // Begin watching.
    watcher.EnableRaisingEvents = true;

在启动 watcher 之前,使用 directorylisting 查找所有现有文件并处理它们,然后使用 watcher

【讨论】:

  • 我不确定,使用目录列表查找所有现有文件是什么意思?最好在我启动观察者之前进行处理吗?
  • 当您只需要处理目录中的所有 jpg 时,请使用 Mfusiki 建议的内容。
【解决方案2】:

这应该得到一个目录中的所有文件:

 private List<FileInfo> GetFileInfo()
    {
        string path = @"C:\MyPath";
        List<FileInfo> files = new List<FileInfo>();
        DirectoryInfo di = new DirectoryInfo(path);

       //TopDirectoryOnly if you don't want subfolders
        foreach (FileInfo f in di.GetFiles("*.jpg", SearchOption.TopDirectoryOnly))
        {
            files.Add(f);
        }

        return files;
    }

然后在您的代码中,遍历返回的集合并执行您需要对它们执行的任何工作。

【讨论】:

    【解决方案3】:

    你可以试试:

    directoryInfo = new DirectoryInfo("C:/YOUR/DIRECTORY/HERE]");
    var files = directoryInfo.GetFiles("*.jpg").OrderBy(x => x.CreationTimeUtc);
    foreach (var file in files)
    {
     //Your processing
    }
    

    请注意,这将获取目录中的所有 .jpg 文件。 foreach 循环将首先从最旧的文件开始。

    【讨论】:

      【解决方案4】:

      这就是你要找的吗? Directory.GetFiles(@"..\somepath") (MSDN)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 2013-03-13
        相关资源
        最近更新 更多