检查目录文件数组的最后写入时间

本文关键字:最后 时间 数组 文件 检查 | 更新日期: 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.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());
    }
}

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