-
[C#] 폴더 압축 / 다중 파일 압축 / 압축 해제Microsoft .NET/C# 2020. 1. 6. 15:57
1. 폴더 압축
//폴더 압축 string folderPath = folderSelectorDialog.FileName; string savePath = folderSelectorDialog.FileName + ".zip"; System.IO.Compression.ZipFile.CreateFromDirectory(folderPath, savePath);
2. 다중 파일 압축
private void btnCompress_Multiple_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog() { Multiselect = true}; if (ofd.ShowDialog() == true) { FileCompression_Multiple(ofd.FileNames); } } public bool FileCompression_Multiple(string[] files) { //예외처리 if (files == null) return false; if (files.Length == 0) return false; FileInfo fi = new FileInfo(files[0]); string parentFolderPath = fi.DirectoryName; string tempFolderName = fi.Name.Split('.')[0]; DirectoryInfo di = new DirectoryInfo(parentFolderPath + "\\" + tempFolderName); //첫번째 파일의 명을 가지고 폴더를 생성하므로 동일한 폴더가 없는지 체크 후 압축함. if (di.Exists == false) { //폴더 생성 di.Create(); //선택 파일 폴더로 이동 foreach (var filePath in files) { FileInfo f = new FileInfo(filePath); System.IO.File.Copy(filePath, di.FullName + "\\" + f.Name); } //폴더 압축 System.IO.Compression.ZipFile.CreateFromDirectory(di.FullName, di.FullName+".zip"); //임시 생성 폴더 삭제 di.Delete(true); return true; } return false; }
3. 압축 해제
//압축 해제 System.IO.Compression.ZipFile.ExtractToDirectory(cofd.FileName, cofd.FileName.Replace(".zip", ""));
'Microsoft .NET > C#' 카테고리의 다른 글
[C#] ColorDialog (색상 선택 컨트롤, 다이얼로그) (0) 2020.07.14 [C#] OpenFileDialog, SaveFileDialog, CommonOpenFileDialog, ColorDialog (0) 2020.03.10 [C#] 16진수(hex) 문자열<-> Byte[] 변환 (0) 2020.01.03 [C#] 어셈블리 정보를 이용한 버전 관리, 자동 증가, 빌드 시간 변환 (0) 2019.10.31 [C# Console] Console 배경 색상 및 글씨색상 변경 (0) 2019.07.02