找传奇、传世资源到传世资源站!

監視文件和資料夾系統變化情況

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

監視文件和資料夾系統變化情況
監視文件和資料夾系統變化情況 桌面应用界面/GUI-第1张private delegate void setLogTextDelegate(FileSystemEventArgs e); //聲明傳遞FileSystemEventArgs物件的委託,用於檔Created,Deleted和Changed變動時更新UI介面。

private delegate void renamedDelegate(RenamedEventArgs e);  //聲明傳遞RenamedEventArgs物件的委託,用於檔Renamed時更新UI介面。

FileSystemWatcher fsw= new FileSystemWatcher();

fsw.Path = “C:\\”;   //設置監控的檔目錄

fsw.IncludeSubdirectories = true;   //設置監控C盤目錄下的所有子目錄

//fsw.Filter = "*.txt|*.doc|*.jpg";   //設置監控檔的類型(看到大家的評論,暫時沒時間測試,檔過濾監控的大家自己測試)

fsw.NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Size;   //設置檔的檔案名、目錄名及檔的大小改動會觸發Changed事件

fsw.Created = new FileSystemEventHandler(this.fileSystemWatcher_EventHandle);  //綁定事件觸發後處理資料的方法。

fsw.Deleted = new FileSystemEventHandler(this.fileSystemWatcher_EventHandle);

fsw.Changed = new FileSystemEventHandler(this.fileSystemWatcher_EventHandle);

fsw.Renamed = new RenamedEventHandler(this.fileSystemWatcher_Renamed);  //重命名事件與增刪改傳遞的參數不一樣。

fsw.EnableRaisingEvents = true;  //啟動監控

private void fileSystemWatcher_EventHandle(object sender, FileSystemEventArgs e)  //檔增刪改時被調用的處理方法
{
     if (this.listView1.InvokeRequired)  //判斷是否跨執行緒
      {
           this.listView1.Invoke(new setLogTextDelegate(setLogText), new object[] { e });   //使用委託將方法封送到UI主執行緒
      }
}

private void fileSystemWatcher_Renamed(object sender,RenamedEventArgs e)   //檔重命名時被調用的處理方法
{
      if (this.listView1.InvokeRequired) //判斷是否跨執行緒
       { 
           this.listView1.Invoke(new renamedDelegate(setRenamedLogText), new object[] { e });  //使用委託將方法封送到UI主執行緒
       }
}

private void setLogText(FileSystemEventArgs e)  //更新UI介面
{
      ListViewItem lvi = new ListViewItem();

      lvi.SubItems.Add(e.Name);   //受影響的檔案名

      lvi.SubItems.Add(e.ChangeType.ToString());   //受影響檔的變動類型(可能為Created、Changed、Deleted)

      lvi.SubItems.Add(e.FullPath);     //受影響的檔完整路徑

      this.listView1.Items.Add(lvi);
}

 private void setRenamedLogText(RenamedEventArgs e)  //更新UI介面
{
       ListViewItem lvi = new ListViewItem();

       lvi.SubItems.Add(e.OldName);   //受影響的檔的原名

       lvi.SubItems.Add(e.ChangeType.ToString());  //受影響的檔的改動類型(Rename)

       lvi.SubItems.Add(e.Name);   //受影響的檔的新名

       lvi.SubItems.Add(e.OldFullPath);     //受影響的檔的原路徑

       lvi.SubItems.Add(e.FullPath);  //受影響的檔的完整路徑(其實和原路徑一樣)

       this.fileEventLog_lvw.Items.Add(lvi);

 }

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复