첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

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
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요