2012-03-09 4 views
1

ファイルを変更する際にファイルを保存するように促したいのですが、問題は私の人生にとって不可能です。ファイルがCで修正されているかどうかを確認する方法#

FileInfoクラスを使用することをおすすめしている人もいますが、lastWriteTime,LastAccessTimeおよびCreationTimeがあります。

FileSystemWatcherではなく、FileInfoクラスを使用して、変更を確認したいですか?

例:ユーザーが自分のプログラム内でファイルを編集して、EXITをロードしてクリックしたとします。ファイルが変更されたかどうかを確認する方法が必要です。存在しない場合は終了します。いくつかの場合は、ファイルを保存するためのプロンプトを表示します。だから私はどのようにそのファイルの変更をチェックするのですか?

+1

回答に必要な情報がありません。あなたはそれを編集するときにタブ内の名前の横にアスタリスクが付いたVS自体のようなものを意味しますか?そしてVSを閉じるときにファイルを保存するようにユーザーに求めますか? –

+2

あなたの質問を明確にしてください。自分のプログラムがファイルを変更したときを意味しますか?それとも、ある外部プログラムがそれを修正した時ということですか?それが2番目の場合は、FileInfoでポーリングする必要があります(何度も繰り返し確認してください)。FileSystemWatcherを使用して通知します。 –

+0

ディスク上で何か他のものが変更されたときに_保存しますか?リロードはもっと理にかなっているようです。 –

答えて

5

最も簡単な方法は、ファイルのMD5ハッシュを計算し、オリジナルのMD5ハッシュを比較することで、これらの二つのファイルが変更された一致しない場合は...ここで

 using (var md5 = new MD5CryptoServiceProvider()) 
     { 
      var buffer = md5.ComputeHash(File.ReadAllBytes(filename)); 
      var sb = new StringBuilder(); 
      for (var i = 0; i < buffer.Length; i++) 
      { 
       sb.Append(buffer[i].ToString("x2")); 
      } 
      return sb.ToString(); 
     } 
+2

これは、ファイルのサイズに応じて、少しリソースを消費することがあります... – mgnoonan

1

は、いくつかの例がありますFileまたはFileInfoクラスを使用してLastWriteTimeを取得する方法。

http://www.csharp-examples.net/file-creation-modification-time/

は、私はあなたがそれを読み込むときに、ファイルのタイムスタンプを格納したファイルは、それ以来、保存されているかどうかを確認するためにFile.GetLastWriteTime()と比較することでしょう。ファイルが外部ソースによって変更されている場合は、変更を破棄してファイルをリロードするか、変更を新しいファイルに保存するかをユーザーに選択できます。

関連する問題