■ FileSystemWatcher 클래스 사용하기

----------------------------------------------------------------------------------------------------


TestProject.zip


Program.cs

 

 

using System;

using System.IO;

 

namespace TestProject

{

    /// <summary>

    /// 프로그램

    /// </summary>

    class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

        ////////////////////////////////////////////////////////////////////// Event

 

        #region 감시자 생성시 처리하기 - watcher_Created(sender, e)

 

        /// <summary>

        /// 감시자 생성시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private static void watcher_Created(object sender, FileSystemEventArgs e)

        {

            WriteLog("CREATED", e);

        }

 

        #endregion

        #region 감시자 변경시 처리하기 - watcher_Changed(sender, e)

 

        /// <summary>

        /// 감시자 변경시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private static void watcher_Changed(object sender, FileSystemEventArgs e)

        {

            WriteLog("CHANGED", e);

        }

 

        #endregion

        #region 감시자 삭제시 처리하기 - watcher_Deleted(sender, e)

 

        /// <summary>

        /// 감시자 삭제시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private static void watcher_Deleted(object sender, FileSystemEventArgs e)

        {

            WriteLog("DELETED", e);

        }

 

        #endregion

        #region 감시자 명칭 변경시 처리하기 - watcher_Renamed(sender, e)

 

        /// <summary>

        /// 감시자 명칭 변경시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private static void watcher_Renamed(object sender, RenamedEventArgs e)

        {

            WriteLog("RENAMED", e);

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////// Function

 

        #region 로그 작성하기 - WriteLog(message, e)

 

        /// <summary>

        /// 로그 작성하기

        /// </summary>

        /// <param name="message">메시지</param>

        /// <param name="e">이벤트 인자</param>

        private static void WriteLog(string message, FileSystemEventArgs e)

        {

            string timeStamp = DateTime.Now.ToString("HH:mm:ss");

 

            Console.WriteLine($"[{timeStamp}] {message}");

            Console.WriteLine("--------------------------------------------------");

            Console.WriteLine($"CHANGE TYPE : {e.ChangeType}");

            Console.WriteLine($"FILE NAME   : {e.Name      }");

            Console.WriteLine($"FULL PATH   : {e.FullPath  }");

            Console.WriteLine();

        }

 

        #endregion

        #region 로그 작성하기 - WriteLog(message, e)

 

        /// <summary>

        /// 로그 작성하기

        /// </summary>

        /// <param name="message">메시지</param>

        /// <param name="e">이벤트 인자</param>

        private static void WriteLog(string message, RenamedEventArgs e)

        {

            string timeStamp = DateTime.Now.ToString("HH:mm:ss");

 

            Console.WriteLine($"[{timeStamp}] {message}");

            Console.WriteLine("--------------------------------------------------");

            Console.WriteLine($"CHANGE TYPE   : {e.ChangeType }");

            Console.WriteLine($"FILE NAME     : {e.Name       }");

            Console.WriteLine($"FULL PATH     : {e.FullPath   }");

            Console.WriteLine($"OLD FILE NAME : {e.OldName    }");

            Console.WriteLine($"OLD FULL PATH : {e.OldFullPath}");

            Console.WriteLine();

        }

 

        #endregion

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            FileSystemWatcher watcher = new FileSystemWatcher(@"C:\TEMP");

 

            watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.CreationTime | NotifyFilters.Size |

                NotifyFilters.LastAccess | NotifyFilters.LastWrite;

 

            watcher.IncludeSubdirectories = true;

            watcher.EnableRaisingEvents   = true;

 

            watcher.Created += watcher_Created;

            watcher.Deleted += watcher_Deleted;

            watcher.Changed += watcher_Changed;

            watcher.Renamed += watcher_Renamed;

 

            Console.WriteLine("프로그램을 종료하기 위해서 아무 키나 눌러 주시기 바랍니다.");

 

            Console.ReadKey(true);

        }

 

        #endregion

    }

}

 

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요