从文件夹中查找文件

高拉杰米西亚

目前,我正在使用以下代码从文件夹中查找下一个文件。基本上,我存储了所读取文件的最后修改日期和时间,在处理完该文件后,我需要转到下一个文件。但是我的代码当前需要大约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;
    }
}
皮特·沃科夫斯基(Piotr Wolkowski)

您是否尝试过缓存结果。您一次执行大量工作,然后从例如字典中快速访问结果。

收集所有文件的时间:

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这里。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章