2016-11-07 10 views
-1

ReadOnlyファイルが書き込み可能になったかどうかを検出する必要があるユースケースがあります。 FileSystemWatcherを使用しようとしましたが、ファイルのどの属性が変更されたかはわかりません。

C# - 属性を監視するファイルの読み取りが変更された

// Create a new FileSystemWatcher and set its properties. 
    FileSystemWatcher watcher = new FileSystemWatcher(); 
    watcher.Path = args[1]; 
    /* Watch for changes in Attribute (In this case only Readonly attribute). */ 
    watcher.NotifyFilter = NotifyFilters.Attributes; 

    private static void OnChanged(object source, FileSystemEventArgs e) 
    { 
     // Specify what is done when a file is changed, created, or deleted. 
     Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
    } 

私は読み取り専用であり、これはされていないファイルは認識していないです。ですから、私はChangeedイベントのファイルのReadOnlyプロパティをチェックするだけではありません。

+2

読み取り専用ファイルを見て、変更されたという通知を受け取った場合は、その属性をチェックするだけでいいですか? –

+0

System.IO.NotifyFiltersを監視する必要があります。 あなたのコードに合ったものはどれですか? https://msdn.microsoft.com/en-us/library/system.io.notifyfilters(v=vs.110).aspx – celerno

+0

@PeterDunihoあなたは質問を再開できますか?私は編集を終えました。 – Peaked

答えて

1

チェックアウトSystem.IO.FileInfo.IsReadOnly。基本的には、OnChangedイベントハンドラで次の処理を実行することで、書き込み可能になったかどうかを確認できます。これは、ファイルがもともと読み取り専用であったことを前提にしています。

// Define the event handlers. 
private static void OnChanged(object source, FileSystemEventArgs e) 
{ 
    // Specify what is done when a file is changed, created, or deleted. 
    if(!System.IO.FileInfo.IsReadOnly) changedToWritable = true; 

} 

https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspxは、FileSystemWatcherのonChangedイベントは、ファイル属性の変更を報告することを示しています。

+0

監視対象のディレクトリ内のどのファイルが読み取り専用であるかわかりません – Peaked

関連する問題