ファイルサイズとタイムスタンプの取得

C#でファイルサイズの取得にはFileInfo.Lengthを、タイムスタンプの取得にはGetLastWriteTimeを使う。

using System;
using System.IO;

public class dir {

  static void Main(){
    string cdir = Directory.GetCurrentDirectory();
    string[] files = Directory.GetFiles(cdir);
    string[] dirs = Directory.GetDirectories(cdir);
    foreach (string s in dirs) {
      string dir = Path.GetFileName(s);
      DirectoryInfo di = new DirectoryInfo(s);
      Console.Write(di.LastWriteTime);
      Console.WriteLine("\t\t<" + dir + ">");
    }
    foreach (string s in files) {
      string file = Path.GetFileName(s);
      FileInfo fi = new FileInfo(s);
      Console.Write(File.GetLastWriteTime(s));
      Console.Write("\t");
      Console.Write(fi.Length);
      Console.Write("\t");
      Console.WriteLine(file);
    }
  }
}

実行結果。

2008/08/31 14:15:25             <.svn>
2008/08/31 0:45:22      1698    dgv.cs
2008/08/18 0:35:54      462     dir.cs
2008/09/01 23:37:08     723     finfo.cs
2008/09/01 23:37:10     3584    finfo.exe
2008/08/20 4:23:05      1448    hotkey.cs
2008/08/26 23:47:17     1817    hotkeytray.cs
2008/08/30 0:11:05      20      makefile
2008/08/31 0:56:11      1767    pbox.cs
2008/08/26 23:24:38     318     test.ico
2008/08/26 23:30:22     464     tray.cs
2008/08/18 23:05:20     321     win.cs

File.GetLastWriteTimeを使っても、一度FileInfoのインスタンスを作ってからLastWriteTimeプロパティを使っても良いが、同じファイルに何度もアクセスする場合はFileInfoのインスタンスを作ってしまったほうが良いようだ。