1

我想要几个文件的 LastWritetTime,但这些文件的路径在一个数组中。

string[] array1 = Directory.GetFiles(@"path", "*.*", System.IO.SearchOption.AllDirectories);

foreach (string name in array1)
{
   Console.WriteLine(name);
}

输出有效,它显示了一个带有完整路径 C:\etc\etc\etc 的长列表。

但是我在stackoverflow的某个地方找到了这段代码

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

这一个也有效,但我想知道这两个代码是否可以以某种方式组合成 1。我已经尝试过:FileInfo file = new FileInfo(array1");但很明显那是行不通的。

我是一个学习的学生,所以很多解释会很棒!:)

如果有人可以帮助我解决这个问题,或者至少给我一些开始,我将非常感激!

4

3 回答 3

2

您可以在循环内提​​供从构造函数获取的路径Directory.GetFilesFileInfo如下所示

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

}
于 2013-09-20T10:22:44.040 回答
1

Damiths 的回答是我最初的评论所暗示的,但我会尝试解释一下正在发生的事情

  • 如您所说,GetFiles返回文件的完整路径数组
  • FileInfo, 将文件路径作为参数

你甚至可能会错过if(File.Exists)因为你已经从目录中返回了它们,你知道它们存在

于 2013-09-20T10:26:34.197 回答
0

如果你使用DirectoryInfo.GetFiles()而不是Directory.GetFiles()then 你会得到一个数组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());
}
于 2013-09-20T10:24:40.907 回答