我有一个用例,我需要检测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属性。
答案 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报告文件属性的更改。