检查目录\ file的LastWriteTime数组

时间:2013-09-20 10:19:53

标签: c# arrays string filesystems .net

我想要几个文件的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");但很明显这样做不会有用。

我是一名学习型学生,所以很多解释都会很棒! :)

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

3 个答案:

答案 0 :(得分:2)

您可以将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());
    }

}

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

如果您使用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());
}