如何记录文件系统I / O操作?

时间:2017-11-26 20:47:01

标签: c# io filesystems

如何记录文件系统输入输出操作?

原因是找到冷热文件系统块。你能建议我在C#中使用哪些API或OS子系统?

1 个答案:

答案 0 :(得分:-1)

使用FileSystemWatcher,您可以跟踪文件系统中发生的情况。

Here是一个促进您正在寻找的例子。

这是它输出的内容:

enter image description here

您可以通过附加和处理FileSystemWatcher

公开的事件来实现此目的
m_Watcher.EnableRaisingEvents = true;
m_Watcher.Changed += new FileSystemEventHandler(OnChanged);
m_Watcher.Created += new FileSystemEventHandler(OnChanged);
m_Watcher.Deleted += new FileSystemEventHandler(OnChanged);
m_Watcher.Renamed += new RenamedEventHandler(OnRenamed);

您也可以获得有关阅读文件的一些信息:

您可以将NotifyFilter属性设置为LastAccess,并捕获Changed事件。像这样:

FileSystemWatcher lWatcher = 
  new FileSystemWatcher(@"C:\Documents and Settings\User\Desktop", "myfile.txt");
lWatcher.NotifyFilter = NotifyFilters.LastAccess;
lWatcher.Changed += new FileSystemEventHandler(HandlerWatcherChanged);

void HandlerWatcherChanged(object sender, FileSystemEventArgs e)
{
   // file has been accessed
}

如果您需要对文件系统进行较低级别的控制,例如文件系统块,您​​可能会在 kernel32.dll 中找到实现此目的的P / Invokes。

阅读thisthis

Here是学习P / Invokes的好地方。