C#
C# 파일 압축하기
위ㄱㅎ
2020. 3. 7. 17:51
원하는 파일들만 필터링하여 압축한다.
1. 지정한 폴더의 필터를 걸어 파일의 리스트를 가져온다.
2. 해당 파일들을 압축한다.
3. 압축한 파일들을 삭제한다.
public List<string> GetDirectoryFileList(string directory, string filter)
{
if (Directory.Exists(directory))
{
DirectoryInfo di = new DirectoryInfo(directory);
List<string> fileNames = new List<string>();
foreach (var file in di.GetFiles(filter))
{
fileNames.Add(file.Name);
}
return fileNames;
}
else
{
return null;
}
}
public void DeleteFile(string file)
{
try
{
File.Delete(file);
}
catch (FileNotFoundException)
{
return;
}
}
//archiveFileDirectory : 압축하고 싶은 파일들이 있는 경로
//archivedDirectoryFileName : 압축파일경로 및 이름
//filter : 압축하고 싶은 파일이름 필터 ex) *.json
public void Archive(string archiveFileDirectory, string archivedDirectoryFileName, string filter)
{
if (GetDirectoryFileList(archiveFileDirectory, filter).Count == 0)
{
return;
}
using (FileStream zipToOpen = new FileStream($"{archivedDirectoryFileName}.zip", FileMode.CreateNew))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
{
foreach (var filePath in Directory.EnumerateFiles(archiveFileDirectory, filter))
{
ZipFileExtensions.CreateEntryFromFile(archive, filePath, filePath.Substring(filePath.LastIndexOf("/")));
DeleteFile(filePath);
}
}
}
}