Class Archive
Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)
Lớp này đại diện cho tệp lưu trữ zip. Sử dụng nó để tạo, trích xuất hoặc cập nhật các lưu trữ zip.
public class Archive : IArchive, IDisposable
Kế thừa
Triển khai
Thành viên Kế thừa
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Các Hàm Khởi Tạo
Archive(ArchiveEntrySettings)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.Archive với các cài đặt tùy chọn cho các mục của nó.
public Archive(ArchiveEntrySettings newEntrySettings = null)
Tham số
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho các mục Aspose.Zip.ArchiveEntry mới được thêm vào.
Nếu không chỉ định, nén Deflate phổ biến nhất mà không có mã hóa sẽ được sử dụng.
Ví dụ
Ví dụ sau cho thấy cách nén một tệp đơn với cài đặt mặc định.
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
Archive(Stream, ArchiveLoadOptions, ArchiveEntrySettings)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.Archive và tạo danh sách các mục có thể được trích xuất từ lưu trữ.
public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)
Tham số
sourceStream
Stream
Nguồn của lưu trữ.
loadOptions
ArchiveLoadOptions
Tùy chọn để tải lưu trữ hiện có.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho các mục Aspose.Zip.ArchiveEntry mới được thêm vào.
Nếu không chỉ định, nén Deflate phổ biến nhất mà không có mã hóa sẽ được sử dụng.
Ví dụ
Ví dụ sau trích xuất một lưu trữ được mã hóa, sau đó giải nén mục đầu tiên vào một MemoryStream
.
var fs = File.OpenRead("encrypted.zip");
var extracted = new MemoryStream();
using (Archive archive = new Archive(fs, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
using (var decompressed = archive.Entries[0].Open())
{
byte[] b = new byte[8192];
int bytesRead;
while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
extracted.Write(b, 0, bytesRead);
}
}
Nhận xét
Constructor này không giải nén bất kỳ mục nào. Xem phương thức Aspose.Zip.ArchiveEntry.Open(System.String) để giải nén.
Ngoại lệ
sourceStream
không thể tìm kiếm.
Tiêu đề mã hóa cho AES mâu thuẫn với phương pháp nén WinZip.
Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.Archive và tạo danh sách các mục có thể được trích xuất từ lưu trữ.
public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)
Tham số
path
string
Đường dẫn đầy đủ hoặc đường dẫn tương đối đến tệp lưu trữ.
loadOptions
ArchiveLoadOptions
Tùy chọn để tải lưu trữ hiện có.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho các mục Aspose.Zip.ArchiveEntry mới được thêm vào.
Nếu không chỉ định, nén Deflate phổ biến nhất mà không có mã hóa sẽ được sử dụng.
Ví dụ
Ví dụ sau trích xuất một lưu trữ được mã hóa, sau đó giải nén mục đầu tiên vào một MemoryStream
.
var extracted = new MemoryStream();
using (Archive archive = new Archive("encrypted.zip", new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
using (var decompressed = archive.Entries[0].Open())
{
byte[] b = new byte[8192];
int bytesRead;
while (0 < (bytesRead = decompressed.Read(b, 0, b.Length)))
extracted.Write(b, 0, bytesRead);
}
}
Nhận xét
Constructor này không giải nén bất kỳ mục nào. Xem phương thức Aspose.Zip.ArchiveEntry.Open(System.String) để giải nén.
Ngoại lệ
path
là null.
Người gọi không có quyền truy cập cần thiết.
path
là rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.
Quyền truy cập vào tệp path
bị từ chối.
path
, tên tệp, hoặc cả hai vượt quá chiều dài tối đa do hệ thống xác định. Ví dụ, trên các nền tảng dựa trên Windows, các đường dẫn phải nhỏ hơn 248 ký tự, và tên tệp phải nhỏ hơn 260 ký tự.
Tệp tại path
chứa một dấu hai chấm (:) ở giữa chuỗi.
Tệp không được tìm thấy.
Đường dẫn được chỉ định không hợp lệ, chẳng hạn như nằm trên một ổ đĩa không được ánh xạ.
Tệp đã mở.
Archive(string, string[], ArchiveLoadOptions)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.Archive từ lưu trữ zip đa khối và tạo danh sách các mục có thể được trích xuất từ lưu trữ.
public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)
Tham số
mainSegment
string
Đường dẫn đến đoạn cuối cùng của lưu trữ đa khối với thư mục trung tâm.
Thông thường đoạn này có phần mở rộng *.zip và nhỏ hơn các đoạn khác.
segmentsInOrder
string[]
Đường dẫn đến mỗi đoạn nhưng đoạn cuối cùng của lưu trữ zip đa khối theo thứ tự.
Thông thường chúng được đặt tên filename.z01, filename.z02, ..., filename.z(n-1).
loadOptions
ArchiveLoadOptions
Tùy chọn để tải lưu trữ hiện có.
Ví dụ
Mẫu này trích xuất đến một thư mục một lưu trữ gồm ba đoạn.
using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
a.ExtractToDirectory("destination");
}
Ngoại lệ
Không thể tải tiêu đề ZIP vì các tệp được cung cấp bị hỏng.
Các Thuộc Tính
Entries
Lấy các mục của loại Aspose.Zip.ArchiveEntry cấu thành lưu trữ.
public ReadOnlyCollection<archiveentry> Entries { get; }
Giá trị thuộc tính
ReadOnlyCollection<ArchiveEntry>
NewEntrySettings
Cài đặt nén và mã hóa được sử dụng cho các mục Aspose.Zip.ArchiveEntry mới được thêm vào.
public ArchiveEntrySettings NewEntrySettings { get; }
Giá trị thuộc tính
Các Phương Thức
CreateEntries(DirectoryInfo, bool)
Thêm vào lưu trữ tất cả các tệp và thư mục một cách đệ quy trong thư mục đã cho.
public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
Tham số
directory
DirectoryInfo
Thư mục để nén.
includeRootDirectory
bool
Cho biết có bao gồm thư mục gốc hay không.
Trả về
Lưu trữ với các mục đã được tạo.
Ví dụ
using (Archive archive = new Archive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.zip");
}
Ngoại lệ
Đường dẫn đến directory
không hợp lệ, chẳng hạn như nằm trên một ổ đĩa không được ánh xạ.
Người gọi không có quyền truy cập cần thiết vào directory
.
CreateEntries(string, bool)
Thêm vào lưu trữ tất cả các tệp và thư mục một cách đệ quy trong thư mục đã cho.
public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
Tham số
sourceDirectory
string
Thư mục để nén.
includeRootDirectory
bool
Cho biết có bao gồm thư mục gốc hay không.
Trả về
Lưu trữ với các mục đã được tạo.
Ví dụ
using (Archive archive = new Archive())
{
archive.CreateEntries("C:\folder");
archive.Save("folder.zip");
}
CreateEntry(string, string, bool, ArchiveEntrySettings)
Tạo một mục đơn trong lưu trữ.
public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)
Tham số
name
string
Tên của mục.
path
string
Tên đầy đủ của tệp mới, hoặc tên tệp tương đối sẽ được nén.
openImmediately
bool
True nếu mở tệp ngay lập tức, ngược lại mở tệp khi lưu trữ.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.ArchiveEntry đã thêm.
Trả về
Thể hiện mục zip.
Ví dụ
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
Nhận xét
Tên mục chỉ được thiết lập trong tham số name
. Tên tệp được cung cấp trong tham số path
không ảnh hưởng đến tên mục.
Nếu tệp được mở ngay lập tức với tham số openImmediately
, nó sẽ bị chặn cho đến khi lưu trữ được lưu.
Ngoại lệ
path
là null.
Người gọi không có quyền truy cập cần thiết.
path
là rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.
Quyền truy cập vào tệp path
bị từ chối.
path
, tên tệp, hoặc cả hai vượt quá chiều dài tối đa do hệ thống xác định. Ví dụ, trên các nền tảng dựa trên Windows, các đường dẫn phải nhỏ hơn 248 ký tự, và tên tệp phải nhỏ hơn 260 ký tự.
Tệp tại path
chứa một dấu hai chấm (:) ở giữa chuỗi.
CreateEntry(string, Stream, ArchiveEntrySettings)
Tạo một mục đơn trong lưu trữ.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)
Tham số
name
string
Tên của mục.
source
Stream
Luồng đầu vào cho mục.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.ArchiveEntry đã thêm.
Trả về
Thể hiện mục zip.
Ví dụ
using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] {0x00, 0xFF} ));
archive.Save("archive.zip");
}
CreateEntry(string, FileInfo, bool, ArchiveEntrySettings)
Tạo một mục đơn trong lưu trữ.
public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)
Tham số
name
string
Tên của mục.
fileInfo
FileInfo
Siêu dữ liệu của tệp sẽ được nén.
openImmediately
bool
True nếu mở tệp ngay lập tức, ngược lại mở tệp khi lưu trữ.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.ArchiveEntry đã thêm.
Trả về
Thể hiện mục zip.
Ví dụ
Tạo lưu trữ với các mục được mã hóa bằng các phương pháp mã hóa và mật khẩu khác nhau.
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
FileInfo fi1 = new FileInfo("data1.bin");
FileInfo fi2 = new FileInfo("data2.bin");
FileInfo fi3 = new FileInfo("data3.bin");
using (var archive = new Archive())
{
archive.CreateEntry("entry1.bin", fi1, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")));
archive.CreateEntry("entry2.bin", fi2, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass2", EncryptionMethod.AES128)));
archive.CreateEntry("entry3.bin", fi3, false, new ArchiveEntrySettings(new DeflateCompressionSettings(), new AesEcryptionSettings("pass3", EncryptionMethod.AES256)));
archive.Save(zipFile);
}
}
Nhận xét
Tên mục chỉ được thiết lập trong tham số name
. Tên tệp được cung cấp trong tham số fileInfo
không ảnh hưởng đến tên mục.
Nếu tệp được mở ngay lập tức với tham số openImmediately
, nó sẽ bị chặn cho đến khi lưu trữ được lưu.
Ngoại lệ
fileInfo
là chỉ đọc hoặc là một thư mục.
Đường dẫn được chỉ định không hợp lệ, chẳng hạn như nằm trên một ổ đĩa không được ánh xạ.
Tệp đã mở.
CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)
Tạo một mục đơn trong lưu trữ.
public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)
Tham số
name
string
Tên của mục.
source
Stream
Luồng đầu vào cho mục.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.ArchiveEntry đã thêm.
fileInfo
FileSystemInfo
Siêu dữ liệu của tệp hoặc thư mục sẽ được nén.
Trả về
Thể hiện mục zip.
Ví dụ
Tạo lưu trữ với mục được mã hóa.
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("entry1.bin", new MemoryStream(new byte[] {0x00, 0xFF} ), new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1")), new FileInfo("data1.bin"));
archive.Save(zipFile);
}
}
Nhận xét
Tên mục chỉ được thiết lập trong tham số name
. Tên tệp được cung cấp trong tham số fileInfo
không ảnh hưởng đến tên mục.
fileInfo
có thể tham chiếu đến System.IO.DirectoryInfo nếu mục là thư mục.
Ngoại lệ
Cả source
và fileInfo
đều null hoặc source
là null và fileInfo
đại diện cho thư mục.
CreateEntry(string, Func<stream>, ArchiveEntrySettings)
Tạo một mục đơn trong lưu trữ.
public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)
Tham số
name
string
Tên của mục.
streamProvider
Func<Stream>
Phương thức cung cấp luồng đầu vào cho mục.
newEntrySettings
ArchiveEntrySettings
Cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.ArchiveEntry đã thêm.
Trả về
Thể hiện mục zip.
Ví dụ
Tạo lưu trữ với mục được mã hóa.
System.Func<Stream> provider = delegate(){ return new MemoryStream(new byte[]{0xFF, 0x00}); };
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("entry1.bin", provider, new ArchiveEntrySettings(new DeflateCompressionSettings(), new TraditionalEncryptionSettings("pass1"))));
archive.Save(zipFile);
}
}
Nhận xét
Phương thức này dành cho .NET Framework 4.0 trở lên và cho phiên bản .NET Standard 2.0.
DeleteEntry(ArchiveEntry)
Xóa lần xuất hiện đầu tiên của một mục cụ thể khỏi danh sách các mục.
public Archive DeleteEntry(ArchiveEntry entry)
Tham số
entry
ArchiveEntry
Mục cần xóa khỏi danh sách các mục.
Trả về
Lưu trữ với mục đã bị xóa.
Ví dụ
Dưới đây là cách bạn có thể xóa tất cả các mục ngoại trừ mục cuối cùng:
using (var archive = new Archive("archive.zip"))
{
while (archive.Entries.Count > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Ngoại lệ
Lưu trữ đã bị hủy.
DeleteEntry(int)
Xóa mục khỏi danh sách các mục theo chỉ số.
public Archive DeleteEntry(int entryIndex)
Tham số
entryIndex
int
Chỉ số bắt đầu từ 0 của mục cần xóa.
Trả về
Lưu trữ với mục đã bị xóa.
Ví dụ
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Ngoại lệ
Lưu trữ đã bị hủy.
entryIndex
nhỏ hơn 0.-hoặc- entryIndex
bằng hoặc lớn hơn số lượng Entries
.
Dispose()
Thực hiện các tác vụ do ứng dụng xác định liên quan đến việc giải phóng, giải phóng hoặc đặt lại các tài nguyên không quản lý.
public void Dispose()
Dispose(bool)
Thực hiện các tác vụ do ứng dụng xác định liên quan đến việc giải phóng, giải phóng hoặc đặt lại các tài nguyên không quản lý.
protected virtual void Dispose(bool disposing)
Tham số
disposing
bool
Cho biết liệu các tài nguyên được quản lý có nên được giải phóng hay không.
ExtractToDirectory(string)
Giải nén tất cả các tệp trong lưu trữ vào thư mục đã cung cấp.
public void ExtractToDirectory(string destinationDirectory)
Tham số
destinationDirectory
string
Đường dẫn đến thư mục để đặt các tệp đã giải nén.
Ví dụ
using (var archive = new Archive("archive.zip"))
{
archive.ExtractToDirectory("C:\extracted");
}
Nhận xét
Nếu thư mục không tồn tại, nó sẽ được tạo.
Ngoại lệ
destinationDirectory
là null.
path
, tên tệp, hoặc cả hai vượt quá chiều dài tối đa do hệ thống xác định. Ví dụ, trên các nền tảng dựa trên Windows, các đường dẫn phải nhỏ hơn 248 ký tự và tên tệp phải nhỏ hơn 260 ký tự.
Người gọi không có quyền truy cập cần thiết vào thư mục hiện có.
Nếu thư mục không tồn tại, đường dẫn chứa một ký tự hai chấm (:) không phải là một phần của nhãn ổ đĩa (“C:").
destinationDirectory
là một chuỗi có độ dài bằng 0, chỉ chứa khoảng trắng, hoặc chứa một hoặc nhiều ký tự không hợp lệ. Bạn có thể truy vấn các ký tự không hợp lệ bằng cách sử dụng phương thức System.IO.Path.GetInvalidPathChars.
-hoặc- đường dẫn được tiền tố bằng, hoặc chỉ chứa, một ký tự hai chấm (:).
Thư mục được chỉ định bởi đường dẫn là một tệp. -hoặc- Tên mạng không được biết đến.
Mật khẩu sai đã được cung cấp. - hoặc - Lưu trữ bị hỏng.
Save(Stream, ArchiveSaveOptions)
Lưu lưu trữ vào luồng đã cung cấp.
public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)
Tham số
outputStream
Stream
Luồng đích.
saveOptions
ArchiveSaveOptions
Tùy chọn cho việc lưu trữ.
Ví dụ
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
using (var archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.Save(zipFile);
}
}
Nhận xét
outputStream
phải có thể ghi.
Ngoại lệ
outputStream
không thể ghi.
Lưu trữ đã bị hủy.
Save(string, ArchiveSaveOptions)
Lưu lưu trữ vào tệp đích đã cung cấp.
public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)
Tham số
destinationFileName
string
Đường dẫn của lưu trữ sẽ được tạo. Nếu tên tệp được chỉ định trỏ đến một tệp đã tồn tại, nó sẽ bị ghi đè.
saveOptions
ArchiveSaveOptions
Tùy chọn cho việc lưu trữ.
Ví dụ
using (var archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.Save("archive.zip", new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
Nhận xét
Có thể lưu một lưu trữ vào cùng một đường dẫn mà nó đã được tải từ. Tuy nhiên, điều này không được khuyến nghị vì phương pháp này sử dụng sao chép vào tệp tạm thời.
Ngoại lệ
destinationFileName
là null.
Người gọi không có quyền truy cập cần thiết.
destinationFileName
là rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.
Quyền truy cập vào tệp destinationFileName
bị từ chối.
destinationFileName
, tên tệp, hoặc cả hai vượt quá chiều dài tối đa do hệ thống xác định.
Ví dụ, trên các nền tảng dựa trên Windows, các đường dẫn phải nhỏ hơn 248 ký tự, và tên tệp phải nhỏ hơn 260 ký tự.
Tệp tại destinationFileName
chứa một dấu hai chấm (:) ở giữa chuỗi.
Tệp không được tìm thấy.
Đường dẫn được chỉ định không hợp lệ, chẳng hạn như nằm trên một ổ đĩa không được ánh xạ.
Tệp đã mở.
SaveSplit(string, SplitArchiveSaveOptions)
Lưu lưu trữ đa khối vào thư mục đích đã cung cấp.
public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)
Tham số
destinationDirectory
string
Đường dẫn đến thư mục nơi các đoạn lưu trữ sẽ được tạo.
options
SplitArchiveSaveOptions
Tùy chọn cho việc lưu trữ, bao gồm tên tệp.
Ví dụ
using (Archive archive = new Archive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.SaveSplit(@"C:\Folder", new SplitArchiveSaveOptions("volume", 65536));
}
Nhận xét
Phương thức này tạo ra một số (n
) tệp filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.
Không thể biến một lưu trữ hiện có thành đa khối.
Ngoại lệ
Lưu trữ này đã được mở từ nguồn hiện có.
Lưu trữ này vừa được nén bằng phương pháp XZ vừa được mã hóa.
destinationDirectory
là null.
Người gọi không có quyền truy cập cần thiết vào thư mục.
destinationDirectory
chứa các ký tự không hợp lệ như “, >, <, hoặc |.
Đường dẫn được chỉ định vượt quá chiều dài tối đa do hệ thống xác định.
Lưu trữ đã bị hủy.