C# FileSystemWatcher

來源:互聯網
上載者:User

 

using System.IO;

//file system watcher object.
        private FileSystemWatcher watcher;
        private delegate void UpdateWatchTextDelegate(string newText);

        public void UpdateWatchText(string newText)
        {
            lblWatch.Text = newText;
        }

        public Form1()
        {
            InitializeComponent();

            this.watcher = new FileSystemWatcher();
            this.watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
            this.watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
            this.watcher.Changed += new FileSystemEventHandler(watcher_Changed);
            this.watcher.Created += new FileSystemEventHandler(watcher_Created);
        }

        void watcher_Created(object sender, FileSystemEventArgs e)
        {
            //throw new NotImplementedException();
            try
            {
                StreamWriter sw = new StreamWriter("c:\\Log.txt", true);
                sw.WriteLine("File: {0} Created", e.FullPath);
                sw.Close();
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Wrote create event to log");
            }
            catch (IOException)
            {
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Error Writing to log");
            }
        }

        void watcher_Changed(object sender, FileSystemEventArgs e)
        {
            //throw new NotImplementedException();
            try
            {
                StreamWriter sw = new StreamWriter("c:\\Log.txt", true);
                sw.WriteLine("File: {0} {1}", e.FullPath, e.ChangeType.ToString());
                sw.Close();
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Wrote change event to log");
            }
            catch (IOException)
            {
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Error Writing to log");
            }
        }

        void watcher_Renamed(object sender, RenamedEventArgs e)
        {
            //throw new NotImplementedException();
            try
            {
                StreamWriter sw = new StreamWriter("c:\\Log.txt", true);
                sw.WriteLine("File renamed from {0} to {1}", e.OldName, e.FullPath);
                sw.Close();
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Wrote renamed event to log");
            }
            catch(IOException)
            {
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Error Writing to log");
            }
        }

        void watcher_Deleted(object sender, FileSystemEventArgs e)
        {
            //throw new NotImplementedException();
            try
            {
                StreamWriter sw = new StreamWriter("c:\\Log.txt", true);
                sw.WriteLine("File: {0} Deleted", e.FullPath);
                sw.Close();
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Wrote delete event to log");
            }
            catch (IOException)
            {
                this.BeginInvoke(new UpdateWatchTextDelegate(UpdateWatchText), "Error Writing to log");
            }
        }

        private void cmdBrowse_Click(object sender, EventArgs e)
        {
            if (FileDialog.ShowDialog() != DialogResult.Cancel)
            {
                txtLocation.Text = FileDialog.FileName;
                cmdWatch.Enabled = true;
            }
        }

        private void cmdWatch_Click(object sender, EventArgs e)
        {
            watcher.Path = Path.GetDirectoryName(txtLocation.Text);//監控路徑(檔案夾)
            watcher.Filter = "*.*" ;//如果filter為檔案名稱則表示監控該檔案,如果為*.txt則表示要監控指定目錄當中的所有.txt檔案
            watcher.NotifyFilter = NotifyFilters.LastWrite |
                NotifyFilters.FileName |
                NotifyFilters.Size;
            lblWatch.Text = "Watching " + txtLocation.Text;

            //begin watching.
            watcher.EnableRaisingEvents = true;
        }
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.