Class GzipArchive
Namespace: Aspose.Zip.Gzip
Assembly: Aspose.Zip.dll (25.1.0)
คลาสนี้แทนไฟล์ gzip archive ใช้เพื่อสร้างหรือแยก gzip archives
public class GzipArchive : IArchive, IDisposable, IArchiveFileEntry
การสืบทอด
การใช้งาน
IArchive, IDisposable, IArchiveFileEntry
สมาชิกที่สืบทอด
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
หมายเหตุ
อัลกอริธึมการบีบอัด Gzip อิงจากอัลกอริธึม DEFLATE ซึ่งเป็นการรวมกันของ LZ77 และการเข้ารหัส Huffman
ตัวสร้าง
GzipArchive()
เริ่มต้นอินสแตนซ์ใหม่ของคลาส Aspose.Zip.Gzip.GzipArchive ที่เตรียมไว้สำหรับการบีบอัด
public GzipArchive()
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีการบีบอัดไฟล์
using (GzipArchive archive = new GzipArchive())
{
archive.SetSource("data.bin");
archive.Save("archive.gz");
}
GzipArchive(Stream, bool)
เริ่มต้นอินสแตนซ์ใหม่ของคลาส Aspose.Zip.Gzip.GzipArchive ที่เตรียมไว้สำหรับการถอดรหัส
public GzipArchive(Stream sourceStream, bool parseHeader = false)
พารามิเตอร์
sourceStream
Stream
แหล่งที่มาของ archive
parseHeader
bool
ว่าจะทำการวิเคราะห์ header ของ stream เพื่อหาคุณสมบัติรวมถึงชื่อหรือไม่ เหมาะสำหรับ stream ที่สามารถค้นหาได้เท่านั้น
ตัวอย่าง
เปิด archive จาก stream และแยกออกไปยัง MemoryStream
var ms = new MemoryStream();
using (GzipArchive archive = new GzipArchive(File.OpenRead("archive.gz")))
archive.Open().CopyTo(ms);
หมายเหตุ
ตัวสร้างนี้ไม่ทำการถอดรหัส ดูวิธีการ Aspose.Zip.Gzip.GzipArchive.Open สำหรับการถอดรหัส
GzipArchive(string, bool)
เริ่มต้นอินสแตนซ์ใหม่ของคลาส Aspose.Zip.Gzip.GzipArchive
public GzipArchive(string path, bool parseHeader = false)
พารามิเตอร์
path
string
เส้นทางไปยังไฟล์ archive
parseHeader
bool
ว่าจะทำการวิเคราะห์ header ของ stream เพื่อหาคุณสมบัติรวมถึงชื่อหรือไม่ เหมาะสำหรับ stream ที่สามารถค้นหาได้เท่านั้น
ตัวอย่าง
เปิด archive จากไฟล์ตามเส้นทางและแยกออกไปยัง MemoryStream
var ms = new MemoryStream();
using (GzipArchive archive = new GzipArchive("archive.gz"))
archive.Open().CopyTo(ms);
หมายเหตุ
ตัวสร้างนี้ไม่ทำการถอดรหัส ดูวิธีการ Aspose.Zip.Gzip.GzipArchive.Open สำหรับการถอดรหัส
ข้อยกเว้น
path
เป็น null
ผู้เรียกไม่มีสิทธิ์เข้าถึงที่จำเป็น
path
ว่างเปล่า มีเฉพาะช่องว่าง หรือมีอักขระที่ไม่ถูกต้อง
การเข้าถึงไฟล์ path
ถูกปฏิเสธ
path
ที่ระบุ ชื่อไฟล์ หรือทั้งสองอย่างเกินความยาวสูงสุดที่กำหนดโดยระบบ ตัวอย่างเช่น บนแพลตฟอร์มที่ใช้ Windows เส้นทางต้องมีความยาวน้อยกว่า 248 ตัวอักษร และชื่อไฟล์ต้องมีความยาวน้อยกว่า 260 ตัวอักษร
ไฟล์ที่ path
มีเครื่องหมายทวิจารณ์ (:) อยู่กลางสตริง
คุณสมบัติ
Name
ชื่อของไฟล์ต้นฉบับ
public string Name { get; }
ค่าของคุณสมบัติ
วิธีการ
Dispose()
ดำเนินการตามงานที่กำหนดไว้ในแอปพลิเคชันที่เกี่ยวข้องกับการปล่อยหรือรีเซ็ตทรัพยากรที่ไม่จัดการ
public void Dispose()
Dispose(bool)
ดำเนินการตามงานที่กำหนดไว้ในแอปพลิเคชันที่เกี่ยวข้องกับการปล่อยหรือรีเซ็ตทรัพยากรที่ไม่จัดการ
protected virtual void Dispose(bool disposing)
พารามิเตอร์
disposing
bool
ว่าจะต้องปล่อยทรัพยากรที่จัดการหรือไม่
Extract(Stream)
แยก archive ไปยัง stream ที่ให้มา
public void Extract(Stream destination)
พารามิเตอร์
destination
Stream
stream จุดหมายปลายทาง ต้องเขียนได้
ตัวอย่าง
using (var archive = new GzipArchive("archive.gz"))
{
archive.Extract(httpResponseStream);
}
ข้อยกเว้น
destination
ไม่รองรับการเขียน
stream เสียหายและไม่มีข้อมูลที่ถูกต้อง
Extract(string)
แยก archive ไปยังไฟล์ตามเส้นทาง
public FileInfo Extract(string path)
พารามิเตอร์
path
string
เส้นทางไปยังไฟล์จุดหมายปลายทาง หากไฟล์มีอยู่แล้ว จะถูกเขียนทับ
คืนค่า
ข้อมูลของไฟล์ที่ถูกแยกออก
ข้อยกเว้น
path
เป็น null
ผู้เรียกไม่มีสิทธิ์เข้าถึงที่จำเป็น
path
ว่างเปล่า มีเฉพาะช่องว่าง หรือมีอักขระที่ไม่ถูกต้อง
การเข้าถึงไฟล์ path
ถูกปฏิเสธ
path
ที่ระบุ ชื่อไฟล์ หรือทั้งสองอย่างเกินความยาวสูงสุดที่กำหนดโดยระบบ ตัวอย่างเช่น บนแพลตฟอร์มที่ใช้ Windows เส้นทางต้องมีความยาวน้อยกว่า 248 ตัวอักษร และชื่อไฟล์ต้องมีความยาวน้อยกว่า 260 ตัวอักษร
ไฟล์ที่ path
มีเครื่องหมายทวิจารณ์ (:) อยู่กลางสตริง
stream เสียหายและไม่มีข้อมูลที่ถูกต้อง
ExtractToDirectory(string)
แยกเนื้อหาของ archive ไปยังไดเรกทอรีที่ให้มา
public void ExtractToDirectory(string destinationDirectory)
พารามิเตอร์
destinationDirectory
string
เส้นทางไปยังไดเรกทอรีที่จะวางไฟล์ที่ถูกแยกออก
หมายเหตุ
หากไดเรกทอรีไม่มีอยู่ จะถูกสร้างขึ้น
ข้อยกเว้น
destinationDirectory
เป็น null
path
ที่ระบุ ชื่อไฟล์ หรือทั้งสองอย่างเกินความยาวสูงสุดที่กำหนดโดยระบบ ตัวอย่างเช่น บนแพลตฟอร์มที่ใช้ Windows เส้นทางต้องมีความยาวน้อยกว่า 248 ตัวอักษร และชื่อไฟล์ต้องมีความยาวน้อยกว่า 260 ตัวอักษร
ผู้เรียกไม่มีสิทธิ์เข้าถึงไดเรกทอรีที่มีอยู่
หากไดเรกทอรีไม่มีอยู่ เส้นทางมีอักขระเครื่องหมายทวิจารณ์ (:) ที่ไม่เป็นส่วนหนึ่งของป้ายชื่อดิสก์ (“C:")
destinationDirectory
เป็นสตริงที่มีความยาวเป็นศูนย์ มีเฉพาะช่องว่าง หรือมีอักขระที่ไม่ถูกต้องหนึ่งตัวหรือมากกว่า คุณสามารถสอบถามหาอักขระที่ไม่ถูกต้องโดยใช้วิธีการ System.IO.Path.GetInvalidPathChars
-หรือ- เส้นทางมีเครื่องหมายทวิจารณ์ (:) ที่ถูกกำหนดไว้หรือมีเฉพาะเครื่องหมายทวิจารณ์ (:) เท่านั้น
ไดเรกทอรีที่ระบุโดยเส้นทางเป็นไฟล์ -หรือ- ชื่อเครือข่ายไม่เป็นที่รู้จัก
Open()
เปิด archive สำหรับการถอดรหัสและจัดเตรียม stream ที่มีเนื้อหาของ archive
public Stream Open()
คืนค่า
stream ที่แสดงถึงเนื้อหาของ archive
ตัวอย่าง
แยก archive และคัดลอกเนื้อหาที่แยกออกไปยังไฟล์ stream
using (var archive = new GzipArchive("archive.gz"))
{
using (var extracted = File.Create("data.bin"))
{
var unpacked = archive.Open();
byte[] b = new byte[8192];
int bytesRead;
while (0 < (bytesRead = unpacked.Read(b, 0, b.Length)))
extracted.Write(b, 0, bytesRead);
}
}
คุณสามารถใช้วิธี Stream.CopyTo สำหรับ .NET 4.0 ขึ้นไป: `unpacked.CopyTo(extracted);`
หมายเหตุ
อ่านจาก stream เพื่อให้ได้เนื้อหาต้นฉบับของไฟล์ ดูส่วนตัวอย่าง
Save(Stream)
บันทึก archive ไปยัง stream ที่ให้มา
public void Save(Stream outputStream)
พารามิเตอร์
outputStream
Stream
stream จุดหมายปลายทาง
ตัวอย่าง
เขียนข้อมูลที่ถูกบีบอัดไปยัง stream ของการตอบสนอง http
using (var archive = new GzipArchive())
{
archive.SetSource(new FileInfo("data.bin"));
archive.Save(httpResponse.OutputStream);
}
หมายเหตุ
outputStream
ต้องเขียนได้
ข้อยกเว้น
outputStream
ไม่สามารถเขียนได้
แหล่งข้อมูลยังไม่ได้ถูกจัดเตรียม
Save(string)
บันทึก archive ไปยังไฟล์จุดหมายปลายทางที่ให้มา
public void Save(string destinationFileName)
พารามิเตอร์
destinationFileName
string
เส้นทางของ archive ที่จะสร้าง หากชื่อไฟล์ที่ระบุชี้ไปยังไฟล์ที่มีอยู่แล้ว จะถูกเขียนทับ
ตัวอย่าง
using (var archive = new GzipArchive())
{
archive.SetSource("data.bin");
archive.Save("archive.gz");
}
ข้อยกเว้น
destinationFileName
เป็น null
ผู้เรียกไม่มีสิทธิ์เข้าถึงที่จำเป็น
destinationFileName
ว่างเปล่า มีเฉพาะช่องว่าง หรือมีอักขระที่ไม่ถูกต้อง
การเข้าถึงไฟล์ destinationFileName
ถูกปฏิเสธ
destinationFileName
ที่ระบุ ชื่อไฟล์ หรือทั้งสองอย่างเกินความยาวสูงสุดที่กำหนดโดยระบบ ตัวอย่างเช่น บนแพลตฟอร์มที่ใช้ Windows เส้นทางต้องมีความยาวน้อยกว่า 248 ตัวอักษร และชื่อไฟล์ต้องมีความยาวน้อยกว่า 260 ตัวอักษร
ไฟล์ที่ destinationFileName
มีเครื่องหมายทวิจารณ์ (:) อยู่กลางสตริง
SetSource(Stream)
ตั้งค่าเนื้อหาที่จะถูกบีบอัดภายใน archive
public void SetSource(Stream source)
พารามิเตอร์
source
Stream
stream ข้อมูลนำเข้าสำหรับ archive
ตัวอย่าง
using (var archive = new GzipArchive())
{
archive.SetSource(new MemoryStream(new byte[] { 0x00, 0xFF }));
archive.Save("archive.gz");
}
SetSource(FileInfo)
ตั้งค่าเนื้อหาที่จะถูกบีบอัดภายใน archive
public void SetSource(FileInfo fileInfo)
พารามิเตอร์
fileInfo
FileInfo
การอ้างอิงไปยังไฟล์ที่จะถูกบีบอัด
ตัวอย่าง
using (var archive = new GzipArchive())
{
archive.SetSource(new FileInfo("data.bin"));
archive.Save("archive.gz");
}
SetSource(string)
ตั้งค่าเนื้อหาที่จะถูกบีบอัดภายใน archive
public void SetSource(string path)
พารามิเตอร์
path
string
เส้นทางไปยังไฟล์ที่จะถูกบีบอัด
ตัวอย่าง
เปิด archive จากไฟล์ตามเส้นทางและแยกออกไปยัง MemoryStream
using (var archive = new GzipArchive())
{
archive.SetSource("data.bin");
archive.Save("archive.gz");
}
ข้อยกเว้น
path
เป็น null
ผู้เรียกไม่มีสิทธิ์เข้าถึงที่จำเป็น
path
ว่างเปล่า มีเฉพาะช่องว่าง หรือมีอักขระที่ไม่ถูกต้อง
การเข้าถึงไฟล์ path
ถูกปฏิเสธ
path
ที่ระบุ ชื่อไฟล์ หรือทั้งสองอย่างเกินความยาวสูงสุดที่กำหนดโดยระบบ ตัวอย่างเช่น บนแพลตฟอร์มที่ใช้ Windows เส้นทางต้องมีความยาวน้อยกว่า 248 ตัวอักษร และชื่อไฟล์ต้องมีความยาวน้อยกว่า 260 ตัวอักษร
ไฟล์ที่ path
มีเครื่องหมายทวิจารณ์ (:) อยู่กลางสตริง
SetSource(TarArchive)
ตั้งค่าเนื้อหาที่จะถูกบีบอัดภายใน archive
public void SetSource(TarArchive tarArchive)
พารามิเตอร์
tarArchive
TarArchive
Tar archive ที่จะถูกบีบอัด
ตัวอย่าง
using (var tarArchive = new TarArchive())
{
tarArchive.CreateEntry("first.bin", "data1.bin");
tarArchive.CreateEntry("second.bin", "data2.bin");
using (var gzippedArchive = new GzipArchive())
{
gzippedArchive.SetSource(tarArchive);
gzippedArchive.Save("archive.tar.gz");
}
}
หมายเหตุ
ใช้วิธีนี้เพื่อสร้าง archive แบบ tar.gz ร่วมกัน