c# - 从文件夹中查找文件

标签 c# file directory

目前我正在使用下面的代码从文件夹中查找下一个文件。基本上我存储我读取的文件的最后修改日期和时间,在我处理完该文件后我需要转到下一个文件。但是我的代码目前需要大约 10 秒来使用下面的代码搜索下一个文件。

有人可以建议更快的方法吗?

DateTime lastfile = DateTime.Parse(System.IO.File.ReadAllText(@"lastFile.txt"));
string[] systemAFiles = System.IO.Directory.GetFiles("G:\\");

foreach (string files in systemAFiles)
{
    DateTime lastWriteTime = System.IO.File.GetLastWriteTime(files);
    if (lastWriteTime > lastfile) //produced after last file was read
    {
        readxml(files);
        break;
    }
}

最佳答案

您是否尝试缓存您的结果。您一次执行大部分工作,然后快速访问结果,例如词典。

收集所有文件的时间:

string[] systemAFiles = System.IO.Directory.GetFiles("G:\\");
Dictionary<DateTime, string> filesAndTimes = new Dictionary<DateTime, string>();

foreach (string file in systemAFiles)
{
    var time = System.IO.File.GetLastWriteTime(file);
    filesAndTimes[time] = file;
}

然后,无需再次搜索所有文件,您只需访问已收集的​​值:

var myFile = filesAndTimes.FirstOrDefault(item => item.Key > lastfile);

此外,如果您需要更新文件的时间,您只需在字典中添加一个条目。请注意,DateTime 是字典中的一个键。如果不是写入时间,可能会导致键冲突。但是两个文件没有两次相同的写入时间,因此在这里依赖 DateTime 应该是安全的。

关于c# - 从文件夹中查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27842567/

相关文章:

c# - Automapper:使用自定义解析器返回的结构

c# - 从类中调用 double

c - fread 和 fwrite 有故障吗?如何处理这个?

Android Gradle Plugin 3.0 将apk输出到不同目录

emacs - gtags如何排除一些特定的子目录

c# - 如何在C#中从 Crystal 报表中获取子报表的名称?

c# - 摘要,为成员忽略了格式错误的 XML 注释

php - 读取文本文件并将内容传输到mysql数据库

java - 文件搜索时出现空指针异常

powershell - 在PowerShell中共享文件夹并设置权限