-4

System.IO 名前空間の Directory.GetFiles() メソッドを優先的に使用して、C# のディレクトリに作成された最新のファイルを返すメソッドを作成したいと思います。NET 2.0 との互換性を維持するために、LINQ を使用しなくても実行できる可能性があります。可能であれば、FilePath をファイル オブジェクトとしてではなく文字列として返すことができれば、それも良いでしょう。構成は次のようになりますが、最新のファイルのみを表示するにはどうすればよいでしょうか。

public static string NewestFileofDirectory(string DirectoryName)
{
 foreach(string File in Directory.GetFiles(DirectoryName))
 {
  if(new FileInfo(File).CreationDate > ???) //here I stuck
  {
    //interesting what would be here...
  }
 }
}
4

3 に答える 3

3

FileInfoおよびDirectoryInfoクラスを使用してこれを行うことができます。最初に指定されたディレクトリ内のすべてのファイルを取得してから、それらのLastWriteTimeを他のファイルと比較します。したがって、比較によって、最後に書き込まれたファイルまたは最近のファイルを取得できます。このメソッドのコードは次のとおりです

 /// <summary>
 /// Returns recently written File from the specified directory.
 /// If the directory does not exist or doesn't contain any file, null is returned.
 /// </summary>
 /// <param name="directoryInfo">Path of the directory that needs to be scanned</param>
 /// <returns></returns>
 public static string NewestFileofDirectory(string directoryPath )
 {
    DirectoryInfo directoryInfo  = new DirectoryInfo(directoryPath);
    if (directoryInfo == null || !directoryInfo.Exists)
        return null;

     FileInfo[] files = directoryInfo.GetFiles();
     DateTime recentWrite = DateTime.MinValue;
     FileInfo recentFile = null;

     foreach (FileInfo file in files)
     {
         if (file.LastWriteTime > recentWrite)
         {
            recentWrite = file.LastWriteTime;
            recentFile = file;
         }
      }
         return recentFile.Name;
 }
于 2013-06-18T18:04:13.290 に答える