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

これも機能しますが、これらの 2 つのコードを何らかの方法で 1 つに結合できるかどうか疑問に思っていました。すでに試しFileInfo file = new FileInfo(array1");ましたが、機能しないことは明らかでした。

私は勉強中の学生なので、たくさんの説明があれば最高です!:)

誰かがこれで私を助けてくれたり、少なくとも私に何かを与えることができれば、とても感謝しています!

4

3 に答える 3

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

}
于 2013-09-20T10:22:44.040 に答える
1

ダミスの答えは私の最初のコメントが示唆していたものですが、何が起こっているのかについて少し説明しようと思います

  • あなたが言っGetFilesたように、ファイルへのフルパスの配列を返します
  • FileInfo、ファイルへのパスをパラメーターとして受け取ります

if(File.Exists)すでにディレクトリからそれらを返したので、それらが存在することがわかっているため、見逃すことさえあります

于 2013-09-20T10:26:34.197 に答える
0

thenDirectoryInfo.GetFiles()の代わりに使用すると、 の配列ではなくの配列が返されるので、次のようになります。Directory.GetFiles()FileInfostring

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 に答える