如何使用C#连续读取文件夹中的文件?

时间:2016-07-13 14:07:22

标签: c# .net

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

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

4 个答案:

答案 0 :(得分:4)

使用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;

在启动观察者之前,使用目录列表查找所有现有文件并进行处理,然后使用观察者

答案 1 :(得分:1)

这是你在找什么? Directory.GetFiles(@"..\somepath")MSDN

答案 2 :(得分:1)

你可以尝试:

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循环将首先从最旧的文件开始。

答案 3 :(得分:1)

这应该获取目录中的所有文件:

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

然后在您的代码中,迭代返回的集合并执行您需要做的任何工作。