개발 실습 및 프로젝트

[C#]파일 날짜 수정기(File Date Modifier)

코드로 칼퇴하기 2021. 2. 7. 22:11
반응형

github: github.com/Co-dingman/FileDateModifer

 

회사에서 문서의 날짜를 수정해야 할 일이 있어, 개발.

 

+ Exception 부분을 전문적으로 코딩하지 않음. (추가 필요함.)

 

Project 구조

 

FileDateModifer.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;

namespace FileDateModifer
{
    public class FileDateModifer
    {
        public Dictionary<string, DateTime> GetFileInfo(string filePath)
        {
            Dictionary<string, DateTime> GetFileInfo = new Dictionary<string, DateTime>();
            Form1 form1 = new Form1();

            var info = new FileInfo(filePath);
			//파일의 정보(생성, 엑세스, 수정)를 불러옴.
            GetFileInfo.Add("CreationTime", info.CreationTime);
            GetFileInfo.Add("LastAccessTime", info.LastAccessTime);
            GetFileInfo.Add("LastWriteTime", info.LastWriteTime);

            return GetFileInfo;
        }
        public bool SetFileDate(string filePath, Dictionary<string,DateTime> getSetDate)
        {
            bool setDateOk;
            try
            {
            	//설정된 시간에 맞춰 파일 날짜를 수정함.
                File.SetCreationTime(filePath, getSetDate["CreationTime"]);
                File.SetLastWriteTime(filePath, getSetDate["LastWriteTime"]);
                File.SetLastAccessTime(filePath, getSetDate["LastAccessTime"]);
                setDateOk = true;
            }
            catch(IOException e)
            {
                MessageBox.Show("날짜 변경에 실패함. \n에러코드: " + e, "날짜 변경 실패");
                setDateOk = false;
            }

            return setDateOk;


        }
        
    }
}

 

Forms1.cs

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace FileDateModifer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void OpenFileBtn_Click(object sender, EventArgs e)
        {
        	//Open File 버튼 클릭 시, 파일의 생성, 수정, 엑세스 일자를 데이트피커에 입력함.
            Dictionary<string, DateTime> FileInfo;
            OpenFileDialog ofd = new OpenFileDialog();
                if (ofd.ShowDialog() == DialogResult.OK) FilePath.Text = ofd.FileName;
                FileDateModifer fdm = new FileDateModifer();

                FileInfo = fdm.GetFileInfo(ofd.FileName);

                CreationTime.Value = FileInfo["CreationTime"];
                LastWriteTime.Value = FileInfo["LastWriteTime"];
                LastAccessTime.Value = FileInfo["LastAccessTime"];
                
                //throw new System.NotImplementedException();
        }
        private void ChangeCollectiveBtn_Click(object sender, EventArgs e)
        {
        	//일괄 변경 클릭 시 메인으로 설정한 시간으로 모두 변경됨.
            CreationTime.Value = ChangeCollectiveTime.Value;
            LastWriteTime.Value = ChangeCollectiveTime.Value;
            LastAccessTime.Value = ChangeCollectiveTime.Value;
        }
        private void 도움말ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("1) Open File 버튼을 클릭하여 파일을 불러주세요.\n" +
                            "2) 기존 파일에 날짜 정보가 입력됩니다. 해당 날짜를 변경해주세요.\n" +
                            "2-1) 일괄변경 옆 날짜 정보를 이용하여 날짜 정보를 일괄로 변경할 수 있습니다.\n" +
                            "3) Modify Date 버튼을 클릭하여 날짜를 수정합니다.", "사용법");
        }

        private void 정보ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("해당 프로그램은 파일의 작성 & 수정 & 엑세스 일자를 변경하는 프로그램입니다.\n" +
                            "version1.0", "프로그램 정보");
        }

        private void ModifyDateBtn_Click(object sender, EventArgs e)
        {
        	//날짜 수정 버튼 클릭 시 설정한 날짜 값으로 파일의 설정이 변경됨.
            bool setDateOk;
            FileDateModifer fdm = new FileDateModifer();
            Dictionary<string, DateTime> getSetDate = new Dictionary<string, DateTime>();

            getSetDate.Add("CreationTime", CreationTime.Value);
            getSetDate.Add("LastWriteTime", LastWriteTime.Value);
            getSetDate.Add("LastAccessTime", LastAccessTime.Value);
            setDateOk = fdm.SetFileDate(FilePath.Text, getSetDate);

            if (setDateOk) MessageBox.Show("날짜 변경에 성공함", "날짜 변경 성공");
            //throw new System.NotImplementedException();
        }
    }
}