我想要几个文件的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");
但很明显这样做不会有用。
我是一名学习型学生,所以很多解释都会很棒! :)
如果有人可以帮我解决这个问题,或者至少给我一些开始,我会非常感激!
答案 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());
}