이전 게시물에서 C#을 사용하여 ZIP 아카이브를 만드는 다양한 방법에 대해 논의했습니다. 이 기사에서는 암호화되고 암호로 보호된 ZIP 아카이브를 만드는 방법도 다루었습니다. ZIP 형식 외에도 7z, tar, RAR 등과 같이 일반적으로 사용되는 아카이브 형식이 있습니다. 이 중 7z 아카이브 형식은 오픈 소스 아키텍처를 기반으로 합니다. 압축률이 높은 파일 및 폴더를 압축하는 데 사용됩니다. 또한 256비트 AES 암호화를 지원하며 파일 이름도 암호화할 수 있습니다. 이 기사에서는 C#을 사용하여 프로그래밍 방식으로 7z(7-Zip) 아카이브를 만드는 방법을 보여줍니다.
이 문서는 다음 섹션으로 나뉩니다.
이 기사의 모든 단계와 코드 샘플은 Aspose.ZIP for .NET을 기반으로 합니다. 따라서 다음 방법 중 하나를 사용하여 API를 설치했는지 확인하십시오.
- NuGet 패키지 관리자를 사용하여 설치합니다.
- 다운로드 DLL and add its reference to the project.
C#을 사용하여 7z(7-Zip) 아카이브 만들기
파일을 7z 아카이브로 압축하는 두 가지 시나리오가 있을 수 있습니다. 파일이 하나뿐이거나 압축할 파일이 많을 수 있습니다. 두 시나리오를 모두 명시적으로 처리할 수 있습니다.
단일 항목으로 7z 아카이브 생성
다음은 단일 항목으로 7z 아카이브를 만드는 단계입니다.
- 새 FileStream을 열어 7z 파일을 만듭니다.
- SevenZipArchive 클래스의 인스턴스를 만듭니다.
- SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings) 메서드를 사용하여 아카이브에 파일을 추가합니다.
- SevenZipArchive.Save(Stream) 메서드를 사용하여 아카이브를 만들고 저장합니다.
다음 코드 샘플은 C#을 사용하여 7z(7-Zip) 아카이브를 만드는 방법을 보여줍니다.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
여러 항목으로 7z 아카이브 만들기
이 경우 파일을 폴더에 넣고 폴더의 경로를 SevenZipArchive.CreateEntries() 메서드에 전달할 수 있습니다. 다음은 7z 아카이브에 여러 파일 항목을 추가하는 단계입니다.
- SevenZipArchive 클래스의 인스턴스를 만듭니다.
- 폴더의 경로를 SevenZipArchive.CreateEntries(String, Boolean) 메서드에 전달합니다.
- SevenZipArchive.Save(String) 메서드를 호출합니다.
다음 코드 샘플은 C#을 사용하여 여러 항목이 있는 7z 아카이브를 만드는 방법을 보여줍니다.
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
C#을 사용하여 AES 암호화된 7z 아카이브 만들기
7z 형식은 파일을 보호하기 위해 AES 암호화를 지원합니다. 7z 파일을 암호화하기 위해 SevenZipAESEncryptionSettings 클래스를 사용합니다. 다음 코드 샘플은 C#을 사용하여 AES 암호화된 7z 아카이브를 만드는 방법을 보여줍니다.
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
archive.Save("archive.7z");
}
C#을 사용하여 7z 항목에 대해 다른 암호 설정
7z 형식을 사용하면 모든 파일 항목에 대해 다른 암호를 지정할 수도 있습니다. 예를 들어, 7z 아카이브에서 두 개의 파일을 압축하려는 경우 각 파일에 대해 다른 암호를 지정할 수 있습니다. 다음은 7z 항목에 대해 다른 암호를 설정하는 단계입니다.
- 7z 아카이브 파일에 대한 새 FileStream을 만듭니다.
- FileInfo 클래스를 사용하여 모든 파일 항목에 액세스합니다.
- SevenZipArchive 클래스의 인스턴스를 만듭니다.
- SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)를 사용하여 7z 아카이브에 항목을 만듭니다.
- SevenZipArchive.Save(Stream) 메서드를 사용하여 아카이브를 저장합니다.
다음 코드 샘플은 7z 아카이브의 모든 항목에 비밀번호를 설정하는 방법을 보여줍니다.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo fi1 = new FileInfo("data1.bin");
FileInfo fi2 = new FileInfo("data2.bin");
FileInfo fi3 = new FileInfo("data3.bin");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
archive.Save(sevenZipFile);
}
}
결론
이 기사에서는 C#을 사용하여 프로그래밍 방식으로 7z 아카이브를 만드는 방법을 배웠습니다. 또한 AES 암호화된 7z 파일을 생성하고 모든 파일 항목에 대해 비밀번호를 설정하는 방법을 살펴보았습니다. 여기에서 파일 압축/압축 해제에 대해 자세히 알아볼 수 있습니다.