ファイルサイズとタイムスタンプの取得
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のインスタンスを作ってしまったほうが良いようだ。