ไฟล์เก็บถาวร ZIP ใช้เพื่อบีบอัดและเก็บไฟล์หรือโฟลเดอร์ตั้งแต่หนึ่งไฟล์ขึ้นไปไว้ในคอนเทนเนอร์เดียว ไฟล์เก็บถาวร ZIP จะสรุปไฟล์และโฟลเดอร์รวมทั้งเก็บข้อมูลเมตาดาต้า การใช้การเก็บถาวรที่พบบ่อยที่สุดคือการลดขนาดของไฟล์สำหรับการจัดเก็บหรือการส่งผ่าน และใช้การเข้ารหัสเพื่อความปลอดภัย นอกจากเครื่องมือบีบอัดไฟล์แล้ว ฟีเจอร์การบีบอัด/แยกไฟล์อัตโนมัติยังใช้ในเดสก์ท็อปและเว็บแอปพลิเคชันต่างๆ สำหรับการอัปโหลด ดาวน์โหลด แชร์ หรือเข้ารหัสไฟล์ บทความนี้ยังกำหนดเป้าหมายสถานการณ์ที่คล้ายกันและนำเสนอวิธีง่ายๆ ในการบีบอัดไฟล์หรือโฟลเดอร์ และสร้างไฟล์ ZIP โดยทางโปรแกรมโดยใช้ C#
ในบทความนี้ คุณจะได้เรียนรู้วิธีดำเนินการเก็บ ZIP ต่อไปนี้:
- สร้างไฟล์ ZIP โดยใช้ C#
- เพิ่มไฟล์หลายไฟล์ลงในไฟล์ ZIP
- เพิ่มโฟลเดอร์ไปยังไฟล์ ZIP
- สร้างไฟล์ ZIP ที่ป้องกันด้วยรหัสผ่านโดยใช้ ZipCrypto
- เข้ารหัสไฟล์ ZIP ด้วยการเข้ารหัส AES
- ตั้งค่าโหมดการบีบอัดแบบขนาน
ไลบรารี C# ZIP
Aspose.ZIP for .NET เป็น API ที่ทรงพลังและใช้งานง่ายสำหรับการซิปหรือคลายซิปไฟล์และโฟลเดอร์ภายในแอปพลิเคชัน .NET นอกจากนี้ยังมีเทคนิคการเข้ารหัส AES เพื่อเข้ารหัสไฟล์ใน ZIP ใน C # คุณสามารถติดตั้ง API ได้จาก NuGet หรือดาวน์โหลดไบนารีจากส่วน ดาวน์โหลด
สร้างไฟล์ ZIP ใน C#
ต่อไปนี้เป็นขั้นตอนในการบีบอัดไฟล์โดยการเพิ่มลงในไฟล์ ZIP:
- สร้างวัตถุ FileStream สำหรับไฟล์เก็บถาวร ZIP เอาต์พุต
- เปิดไฟล์ต้นฉบับในวัตถุ FileStream
- สร้างวัตถุของคลาส Archive
- เพิ่มไฟล์ลงในไฟล์เก็บถาวรโดยใช้เมธอด Archive.CreateEntry(string, FileStream)
- สร้างไฟล์ ZIP โดยใช้วิธี Archive.Save(FileStream)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเพิ่มไฟล์ลงในไฟล์ ZIP โดยใช้ C#
// สร้าง FileStream สำหรับไฟล์ ZIP เอาต์พุต
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
// ไฟล์ที่จะเพิ่มไปยังไฟล์เก็บถาวร
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings()))
{
// เพิ่มไฟล์ไปยังไฟล์เก็บถาวร
archive.CreateEntry("alice29.txt", source1);
// ไฟล์ ZIP
archive.Save(zipFile);
}
}
}
เพิ่มไฟล์หลายไฟล์ลงในไฟล์ ZIP ใน C
ในกรณีที่คุณต้องการเพิ่มไฟล์หลายไฟล์ลงในไฟล์ ZIP คุณสามารถทำได้โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้
C# ZIP หลายไฟล์โดยใช้ FileStream
ในวิธีนี้ คลาส FileStream จะใช้เพื่อเพิ่มไฟล์ไปยังไฟล์ ZIP โดยใช้วิธี Archive.CreateEntry(String, FileStream) ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเพิ่มไฟล์หลายไฟล์ใน ZIP ใน C#
// สร้าง FileStream สำหรับเอาต์พุตไฟล์ ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// ไฟล์ที่จะเพิ่มไปยังไฟล์เก็บถาวร
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
// ไฟล์ที่จะเพิ่มไปยังไฟล์เก็บถาวร
using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
// เพิ่มไฟล์ไปยังไฟล์เก็บถาวร
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik3.txt", source2);
// ZIP ไฟล์
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
}
}
}
}
C# ZIP หลายไฟล์โดยใช้ FileInfo
คุณยังสามารถใช้คลาส FileInfo เพื่อเพิ่มไฟล์หลายไฟล์ลงในไฟล์ ZIP ในวิธีนี้ ไฟล์จะถูกโหลดโดยใช้คลาส FileInfo และเพิ่มลงในไฟล์ ZIP โดยใช้วิธี Archive.CreateEntry(String, FileInfo) ตัวอย่างโค้ดต่อไปนี้แสดงวิธี ZIP หลายไฟล์โดยใช้คลาส FileInfo ใน C#
// สร้าง FileStream สำหรับเอาต์พุตไฟล์ ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// ไฟล์ที่จะเพิ่มไปยังไฟล์เก็บถาวร
FileInfo fi1 = new FileInfo("alice29.txt");
FileInfo fi2 = new FileInfo("fields.c");
using (var archive = new Archive())
{
// เพิ่มไฟล์ไปยังไฟล์เก็บถาวร
archive.CreateEntry("alice29.txt", fi1);
archive.CreateEntry("fields.c", fi2);
// สร้างไฟล์ ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
ไฟล์ ZIP โดยใช้เส้นทาง
แทนที่จะใช้คลาส FileInfo หรือ FileStream สำหรับรายการ ZIP คุณสามารถระบุเส้นทางของไฟล์โดยตรงไปยังเมธอด [Archive.CreateEntry(ชื่อสตริง เส้นทางสตริง บูลีน openImmediately ArchiveEntrySettings ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการ ZIP ไฟล์โดยใช้เส้นทาง
// สร้าง FileStream สำหรับเอาต์พุตไฟล์ ZIP
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
// สร้างไฟล์เก็บถาวร
using (var archive = new Archive())
{
// เพิ่มไฟล์ไปยังไฟล์ ZIP
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
เพิ่มโฟลเดอร์ไปยังไฟล์ ZIP ใน C
คุณสามารถ ZIP โฟลเดอร์ด้วยไลบรารี C# ZIP ซึ่งอาจเป็นอีกทางเลือกหนึ่งในการเพิ่มไฟล์หลายไฟล์ไปยังไฟล์ ZIP เพียงใส่ไฟล์ต้นฉบับลงในโฟลเดอร์และเพิ่มโฟลเดอร์นั้นไปยังไฟล์ ZIP ต่อไปนี้เป็นขั้นตอนในการ ZIP โฟลเดอร์ใน C#:
- สร้างวัตถุของคลาส FileStream สำหรับไฟล์ ZIP เอาต์พุต
- สร้างอินสแตนซ์ของคลาส Archive
- ใช้คลาส DirectoryInfo เพื่อระบุโฟลเดอร์ที่จะซิป
- ใช้เมธอด Archive.CreateEntries(DirectoryInfo) เพื่อเพิ่มโฟลเดอร์ใน ZIP
- สร้างไฟล์ ZIP โดยใช้วิธี Archive.Save(FileStream)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเพิ่มโฟลเดอร์ใน ZIP ใน C#
// สร้าง FileStream สำหรับไฟล์ ZIP เอาต์พุต
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive())
{
// โฟลเดอร์ที่จะซิป
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// สร้างไฟล์ ZIP
archive.Save(zipFile);
}
}
สร้าง ZIP ที่ป้องกันด้วยรหัสผ่านโดยใช้ ZipCrypto ใน C
คุณสามารถป้องกันไฟล์ ZIP โดยใช้รหัสผ่านและใช้การเข้ารหัส ZipCrypto สำหรับสิ่งนี้ คลาส ArchiveEntrySettings ถูกใช้ในตัวสร้างของ Archive ที่ยอมรับประเภทการเข้ารหัสเป็นพารามิเตอร์ที่สอง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างไฟล์ ZIP ที่ป้องกันด้วยรหัสผ่านโดยใช้ ZipCrypto ใน C#
// สร้าง FileStream สำหรับไฟล์ ZIP เอาต์พุต
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
{
// เพิ่มโฟลเดอร์ไปยังไฟล์เก็บถาวร
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// สร้างไฟล์ ZIP
archive.Save(zipFile);
}
}
C# สร้างรหัสผ่านป้องกัน ZIP ด้วยการเข้ารหัส AES
Aspose.ZIP for .NET ยังให้คุณใช้การเข้ารหัส AES เพื่อป้องกันไฟล์ ZIP คุณสามารถใช้วิธีการเข้ารหัส AES ต่อไปนี้:
- AES128
- AES192
- สศ256
ในการใช้การเข้ารหัส AES API เสนอคลาส AesEcryptionSettings ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างรหัสผ่านป้องกัน ZIP ด้วยการเข้ารหัส AES ใน C#
// สร้าง FileStream สำหรับเอาต์พุตไฟล์ ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
{
// เพิ่มโฟลเดอร์ที่จะเก็บถาวร
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// สร้างไฟล์ ZIP
archive.Save(zipFile);
}
}
ตั้งค่าโหมดการบีบอัดแบบขนาน
คุณยังสามารถกำหนดค่า API สำหรับการบีบอัดแบบขนานในกรณีที่มีหลายรายการ สำหรับสิ่งนี้ คุณสามารถระบุโหมดการบีบอัดแบบขนานโดยใช้คลาส ParallelOptions Aspose.ZIP for .NET มีโหมดการบีบอัดแบบขนานดังต่อไปนี้
- ไม่เคย - อย่าบีบอัดแบบขนาน
- เสมอ - ทำการบีบอัดแบบขนาน (ระวังหน่วยความจำไม่เพียงพอ)
- อัตโนมัติ - ตัดสินใจว่าจะใช้การบีบอัดแบบขนานหรือไม่ตามรายการ ตัวเลือกนี้อาจบีบอัดบางรายการพร้อมกันเท่านั้น
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการตั้งค่าโหมดการบีบอัดแบบขนานในขณะที่ซิปไฟล์หลายไฟล์ด้วยไลบรารี C# ZIP ของ Aspose
// สำหรับตัวอย่างและไฟล์ข้อมูลทั้งหมด โปรดไปที่ https://github.com/aspose-zip/Aspose.ZIP-for-.NET
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create))
{
using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
{
using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
//กำหนดเกณฑ์ความเท่าเทียมกัน
var parallelOptions = new ParallelOptions
{
ParallelCompressInMemory = ParallelCompressionMode.Always
};
archive.Save(zipFile,
new ArchiveSaveOptions()
{
ParallelOptions = parallelOptions,
Encoding = Encoding.ASCII,
ArchiveComment = "There are two poems from Canterbury corpus"
});
}
}
}
}
เรียนรู้เพิ่มเติมเกี่ยวกับ C# .NET ZIP Library
สำรวจเพิ่มเติมเกี่ยวกับ C# ZIP API ของเราโดยใช้แหล่งข้อมูลต่อไปนี้:
ทำ ZIP Archives ออนไลน์
คุณยังสามารถลองใช้แอปพลิเคชันออนไลน์ฟรี ซึ่งใช้ Aspose.ZIP for .NET เพื่อบีบอัดไฟล์ลงในไฟล์ ZIP
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีสร้างไฟล์ ZIP โดยทางโปรแกรมใน C# ตัวอย่างโค้ดได้สาธิตวิธีเพิ่มไฟล์และโฟลเดอร์ในไฟล์ ZIP นอกจากนี้ เรายังกล่าวถึงวิธีการสร้างไฟล์ ZIP ที่ป้องกันด้วยรหัสผ่านด้วยวิธีการเข้ารหัส ZipCrypto และ AES โดยใช้ไลบรารี ZIP ของ C# Aspose นอกจากนี้ยังมีการกล่าวถึงการบีบอัดแบบขนานของหลายรายการในตอนท้าย ในกรณีที่คุณมีคำถามหรือข้อสงสัย คุณสามารถถามเราได้ที่ ฟอรัม