C# - 监视任何文件的Readonly属性是否已更改

时间:2016-11-07 22:25:55

标签: c# .net filesystemwatcher

我有一个用例,我需要检测ReadOnly文件是否可写。我尝试过使用FileSystemWatcher,但它没有告诉我文件的哪个属性发生了变化。

    // 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);
    }

我不知道哪些文件是ReadOnly,哪些文件不是。所以我不能只检查Changed事件上文件的ReadOnly属性。

1 个答案:

答案 0 :(得分: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报告文件属性的更改。