ใน โพสต์ก่อนหน้า ฉันได้พูดถึงวิธีต่างๆ ในการสร้างไฟล์เก็บถาวร ZIP โดยใช้ C# บทความนี้ยังกล่าวถึงวิธีสร้างไฟล์ ZIP ที่เข้ารหัสและป้องกันด้วยรหัสผ่าน นอกจากรูปแบบ ZIP แล้ว ยังมีรูปแบบไฟล์เก็บถาวรอื่นๆ ที่ใช้กันทั่วไป เช่น 7z, tar, RAR ฯลฯ ในบรรดารูปแบบไฟล์เก็บถาวร 7z จะอิงตามสถาปัตยกรรมโอเพ่นซอร์ส และใช้สำหรับบีบอัดไฟล์และโฟลเดอร์ที่มีอัตราส่วนการบีบอัดสูง นอกจากนี้ยังรองรับการเข้ารหัส AES 256 บิตและอนุญาตให้เข้ารหัสชื่อไฟล์ได้เช่นกัน ในบทความนี้ ฉันจะสาธิตวิธีสร้างไฟล์เก็บถาวร 7z (7-Zip) โดยทางโปรแกรมโดยใช้ C#
บทความนี้แบ่งออกเป็นส่วนต่อไปนี้:
- สร้างไฟล์เก็บถาวร 7z (7-Zip) โดยใช้ C#
- สร้าง AES Encrypted 7z Archive โดยใช้ C#
- ตั้งรหัสผ่านที่แตกต่างกันสำหรับรายการ 7z โดยใช้ C #
ขั้นตอนและตัวอย่างโค้ดทั้งหมดในบทความนี้อ้างอิงจาก Aspose.ZIP for .NET ดังนั้น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง API โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:
- ติดตั้งโดยใช้ NuGet Package Manager
- ดาวน์โหลด DLL and add its reference to the project.
สร้างไฟล์เก็บถาวร 7z (7-Zip) โดยใช้ C#
มีสองสถานการณ์ที่เป็นไปได้ในการบีบอัดไฟล์ลงในไฟล์เก็บถาวร 7z ไม่ว่าคุณจะมีเพียงไฟล์เดียวหรืออาจมีไฟล์จำนวนมากที่ต้องบีบอัด คุณสามารถจัดการกับทั้งสองสถานการณ์ได้อย่างชัดเจน
สร้างไฟล์เก็บถาวร 7z ด้วยรายการเดียว
ต่อไปนี้เป็นขั้นตอนในการสร้างไฟล์เก็บถาวร 7z ด้วยรายการเดียว
- เปิด FileStream ใหม่เพื่อสร้างไฟล์ 7z
- สร้างอินสแตนซ์ของคลาส SevenZipArchive
- เพิ่มไฟล์ไปยังไฟล์เก็บถาวรโดยใช้เมธอด SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings)
- สร้างและบันทึกไฟล์เก็บถาวรโดยใช้เมธอด SevenZipArchive.Save(Stream)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์เก็บถาวร 7z (7-Zip) โดยใช้ C#
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)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์เก็บถาวร 7z ที่มีหลายรายการโดยใช้ C#
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
สร้าง AES Encrypted 7z Archive โดยใช้ C#
รูปแบบ 7z รองรับการเข้ารหัส AES เพื่อรักษาความปลอดภัยของไฟล์ ในการเข้ารหัสไฟล์ 7z จะใช้คลาส SevenZipAESEncryptionSettings ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์เก็บถาวร 7z ที่เข้ารหัส AES โดยใช้ C#
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");
}
ตั้งรหัสผ่านที่แตกต่างกันสำหรับรายการ 7z โดยใช้ C
รูปแบบ 7z ยังให้คุณระบุรหัสผ่านที่แตกต่างกันสำหรับทุกรายการไฟล์ ตัวอย่างเช่น หากคุณกำลังจะบีบอัดไฟล์สองไฟล์ในไฟล์เก็บถาวร 7z คุณสามารถระบุรหัสผ่านที่แตกต่างกันสำหรับแต่ละไฟล์ได้ ต่อไปนี้เป็นขั้นตอนในการตั้งรหัสผ่านที่แตกต่างกันสำหรับรายการ 7z
- สร้าง FileStream ใหม่สำหรับไฟล์เก็บถาวร 7z
- เข้าถึงทุกรายการไฟล์โดยใช้คลาส FileInfo
- สร้างอินสแตนซ์ของคลาส SevenZipArchive
- สร้างรายการในไฟล์เก็บถาวร 7z โดยใช้ SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- บันทึกไฟล์เก็บถาวรโดยใช้เมธอด 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);
}
}
บทสรุป
ในบทความนี้ เราได้เรียนรู้วิธีสร้างไฟล์เก็บถาวร 7z โดยทางโปรแกรมโดยใช้ C# นอกจากนี้ เราได้เห็นวิธีสร้างไฟล์ 7z ที่เข้ารหัส AES และตั้งรหัสผ่านสำหรับทุกรายการไฟล์ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการบีบอัด/คลายไฟล์ได้จาก ที่นี่