检查目录文件数组的最后写入时间
本文关键字:最后 时间 数组 文件 检查 | 更新日期: 2023-09-27 18:32:03
我想要几个文件的LastWritetTime,但这些文件的路径在一个数组中。
string[] array1 = Directory.GetFiles(@"path", "*.*", System.IO.SearchOption.AllDirectories);
foreach (string name in array1)
{
Console.WriteLine(name);
}
输出有效,它显示一个带有完整路径 C:''etc''etc''etc 的长列表。
但是我在堆栈溢出的某个地方找到了这段代码
FileInfo file = new FileInfo(@"path");
Console.WriteLine("Checking file: " + file.Name);
Console.WriteLine("File exists: " + file.Exists.ToString());
if (file.Exists)
{
Console.WriteLine(file.CreationTime.ToString());
Console.WriteLine(file.LastWriteTime.ToString());
Console.WriteLine(file.LastAccessTime.ToString());
}
这个也可以工作,但我想知道这 2 个代码是否可以以某种方式组合成 1。我已经试过了:FileInfo file = new FileInfo(array1");
但很明显这是行不通的。
我是一个学习型的学生,所以很多解释会很棒! :)
如果有人能帮助我解决这个问题,或者至少给我一些开始的东西,我将不胜感激!
您可以在循环中提供从Directory.GetFiles
到FileInfo
构造函数的路径,如下所示
string[] array1 = Directory.GetFiles(@"path", "*.*", System.IO.SearchOption.AllDirectories);
foreach (string name in array1)
{
FileInfo file = new FileInfo(name);
Console.WriteLine("Checking file: " + file.Name);
Console.WriteLine("File exists: " + file.Exists.ToString());
if (file.Exists)
{
Console.WriteLine(file.CreationTime.ToString());
Console.WriteLine(file.LastWriteTime.ToString());
Console.WriteLine(file.LastAccessTime.ToString());
}
}
Damiths 的答案是我最初的评论所建议的,但我会尝试解释一下发生了什么
- 正如您所说,
GetFiles
返回文件的完整路径数组 -
FileInfo
,将文件的路径作为参数
您甚至可能会错过if(File.Exists)
因为您已经从目录中返回了它们,因此您知道它们存在
如果你使用DirectoryInfo.GetFiles()
而不是Directory.GetFiles()
那么你会得到一个FileInfo
数组,而不是一个string
数组,所以:
var fileInfoArray = DirectoryInfo.GetFiles(@"path");
foreach(var fInfo in fileInfoArray)
{
Console.WriteLine(fInfo.CreationTime.ToString());
Console.WriteLine(fInfo.LastWriteTime.ToString());
Console.WriteLine(fInfo.LastAccessTime.ToString());
}