본문 바로가기
프로그래밍/C#

[C#] 파일 압축하기

by 뽀도 2020. 12. 21.

파일 압축하기 코드

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("== Hello World ==");

            try
            {
                // 1. 압축할 폴더 생성 
                var directoryName = @"D:\ZipTest\" + "NewZip";
                System.IO.Directory.CreateDirectory(directoryName);

                // 복사할 파일 이름 
                var fileList = new List<string>
                {
                    "testfile1.txt",
                    "testfile2.txt"
                };

                foreach (var fileName in fileList)
                {
                    // 원본 파일 위치
                    var sourceFile = System.IO.Path.Combine(@"D:\ZipTest", fileName);

                    // 파일 이동할 곳 
                    var destFile = System.IO.Path.Combine(directoryName, fileName);

                    // 1. 압축할 폴더로 데이터 복사 
                    System.IO.File.Copy(sourceFile, destFile, true);
                }

                // .zip 파일 패스 
                var zipPath = directoryName + ".zip";

                // 특정 폴더, .zip으로 압축 
                ZipFile.CreateFromDirectory(directoryName, zipPath);

                // 압축 끝난 폴더 삭제
                System.IO.Directory.Delete(directoryName, true);

                Console.WriteLine("파일 압축이 끝났습니다.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message.ToString());
                Console.WriteLine(e.StackTrace.ToString());
            }

            Console.ReadLine();
        }
    }

 

로직 설명

 

1. 원본 폴더에서 압축할 파일들을 복사해올 폴더를 생성한다.

 

var directoryName = @"D:\ZipTest\" + "NewZip";
System.IO.Directory.CreateDirectory(directoryName);

 

2.  압축할 파일 이름을 리스트로 만든다.

    만약 하나라면 굳이 리스트로 만들 필요가 없다.

 var fileList = new List<string>
 {
   "testfile1.txt",
   "testfile2.txt"
 };

 

3. 압축할 파일들을 1.에서 만들어준 폴더로 복사한다.

foreach (var fileName in fileList)
{
  // 원본 파일 위치
  var sourceFile = System.IO.Path.Combine(@"D:\ZipTest", fileName);

  // 파일 이동할 곳 
  var destFile = System.IO.Path.Combine(directoryName, fileName);

  // 1. 압축할 폴더로 데이터 복사 
  System.IO.File.Copy(sourceFile, destFile, true);
}

  

4. zip 파일 이름 설정 후 1에서 만든 폴더를 압축한다.

 // .zip 파일 패스 
 var zipPath = directoryName + ".zip";

// 특정 폴더, .zip으로 압축 
ZipFile.CreateFromDirectory(directoryName, zipPath);

 

5. 압축이 끝난 1에서 만든 폴더를 삭제한다.

왜냐면 내가 필요한것이 .zip 파일이기 때문

// 압축 끝난 폴더 삭제
System.IO.Directory.Delete(directoryName, true);

Console.WriteLine("파일 압축이 끝났습니다.");

 

 

결과

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

[C#] Nested transactions are not supported.  (0) 2021.06.07
[C#] localIP / public IP 가져오기  (0) 2021.03.23
[C#] MD5 암호화  (0) 2020.09.03
Dapper 사용시 key/explicitKey  (0) 2020.01.03
GetLocalIP()  (0) 2019.11.13

댓글