2010-12-07 11 views
1

問題:決定7

は、Windows XPでは、次のコードは、ファイルが最近、いくつかの特定のディレクトリ(書き込みまたは上書き)にコピーされていたなら、私に判断するために許可今日のポイント。ウィンXPで

行動:ファイルが書き込まれるか、当日のディレクトリに上書きされた場合

は、「LastAccessTimeは、」現在の日の日付を返します。 Windows 7の

動作

それは(すなわち、エクスプローラ経由で)ファイルのプロパティの「アクセス型」の下にリストされている日付を返します。

  • IはLastWriteTimeを使用する場合、それは必ずしもファイルにコピーまたは上書きされた日付でないファイルのプロパティに示される「修飾」日付を返しますカレントディレクトリ。

コード:

DateTime today = new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,0,0,0); 
FileInfo a = new FileInfo("file.txt"); 
if (a.LastAccessTime > today) 
{//do something 
} 
+6

「DateTime.Today': –

+1

「これはWindows 7では動作しません」 - 「これは動作していない」とはどういう意味ですか?例外/エラーコード/予期しない動作などがありますか? –

+0

これは正確なコードですか?私。ファイル名は相対パス(パスと名前のみ)ですか?はいの場合、プロセスの現在のディレクトリが期待したディレクトリと異なることがあります。 –

答えて

2

あなたは書き込みをテストしたい場合は、LastWriteTimeを使用する必要があります。たとえば、次のコードは、今日変更されたすべてのファイルを書き出し:

using System; 
using System.IO; 

class Test 
{ 
    static void Main() 
    { 
     DateTime today = DateTime.Today; 
     foreach (FileInfo file in new DirectoryInfo(".").GetFiles()) 
     { 
      if (file.LastWriteTime >= today) 
      { 
       Console.WriteLine(file.Name); 
      } 
     } 
    } 
} 

私はWindows 7のLastAccessTimeを更新することがないようだという同意する - 私はなぜわかりません。私はLastAccessTimeを使用する場合と同じ結果を参照してください

dir /Ta 

でディレクトリを見ている - これは、しかし、ファイルシステムの一部であるように思われます。おそらく、アクセスに関するファイルシステム情報を更新するアップデートが無効になっている可能性があります。

+1

リソースを節約するためにデフォルトでは無効になっています。 http://www.groovypost.com/howto/microsoft/enable-last-access-time-stamp-to-files-folder-windows-7/ –

+0

LastAccessTimeの更新は、Windows Vistaを開始するとデフォルトで無効になりました。 NTFSパフォーマンスhttp://blogs.technet.com/b/filecab/archive/2006/11/07/disabling-last-access-time-in-windows-vista-to-improve-ntfs-performance.aspx –

+0

これまでにベンチマークされた人あなたはこれらのNTFSのチューニングで実際の生活の中でどのくらいの利益を得るかを参照してください? –

4

Windows Vista以降、最終アクセス時刻はデフォルトでは更新されません。これは、ファイルシステムのパフォーマンスを向上させるためです。あなたは、ここで詳細を見つけることができます。

http://blogs.technet.com/b/filecab/archive/2006/11/07/disabling-last-access-time-in-windows-vista-to-improve-ntfs-performance.aspx

をしかし、あなたはLastAccessTimeに興味を持っていないなら、あなたはLastWriteTimeに興味を持っています。

FileInfo a = new FileInfo(f); 
if (a.LastWriteTime > DateTime.Today) 
{ 
    //do something 
} 

BTW - ノートDateTime.Today。それはあなたの "今日の"コードと同じ結果を生み出します。