Class SevenZipArchive
Namespace: Aspose.Zip.SevenZip
Assembly: Aspose.Zip.dll (25.1.0)
Lớp này đại diện cho tệp lưu trữ 7z. Sử dụng nó để tạo và giải nén các lưu trữ 7z.
public class SevenZipArchive : 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
SevenZipArchive(SevenZipEntrySettings)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.SevenZip.SevenZipArchive với các cài đặt tùy chọn cho các mục của nó.
public SevenZipArchive(SevenZipEntrySettings newEntrySettings = null)
Tham số
newEntrySettings
SevenZipEntrySettings
Các cài đặt nén và mã hóa được sử dụng cho các mục Aspose.Zip.SevenZip.SevenZipArchiveEntry mới được thêm vào. Nếu không được chỉ định, sẽ sử dụng nén LZMA mà không có mã hóa.
Ví dụ
Ví dụ sau cho thấy cách nén một tệp đơn với các cài đặt mặc định: nén LZMA mà không có mã hóa.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
SevenZipArchive(Stream, string)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.SevenZip.SevenZipArchive và tạo danh sách các mục có thể được giải nén từ lưu trữ.
public SevenZipArchive(Stream sourceStream, string password = null)
Tham số
sourceStream
Stream
Nguồn của lưu trữ.
password
string
Mật khẩu tùy chọn cho việc giải mã. Nếu tên tệp được mã hóa, nó phải có mặt.
Ví dụ
using (SevenZipArchive archive = new SevenZipArchive(File.OpenRead("archive.7z")))
{
archive.ExtractToDirectory("C:\\extracted");
}
Nhận xét
Hàm khởi tạo này không giải nén bất kỳ mục nào. Xem phương thức Aspose.Zip.SevenZip.SevenZipArchive.ExtractToDirectory(System.String,System.String) để giải nén.
Ngoại lệ
sourceStream
không thể tìm kiếm.
sourceStream
là null.
Lưu trữ chứa nhiều hơn một bộ mã. Hiện tại chỉ hỗ trợ nén LZMA.
SevenZipArchive(string, string)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.SevenZip.SevenZipArchive và tạo danh sách các mục có thể được giải nén từ lưu trữ.
public SevenZipArchive(string path, string password = null)
Tham số
path
string
Đường dẫn đầy đủ hoặc đường dẫn tương đối đến tệp lưu trữ.
password
string
Mật khẩu tùy chọn cho việc giải mã. Nếu tên tệp được mã hóa, nó phải có mặt.
Ví dụ
using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
{
archive.ExtractToDirectory("C:\\extracted");
}
Nhận xét
Hàm khởi tạo này không giải nén bất kỳ mục nào. Xem phương thức Aspose.Zip.SevenZip.SevenZipArchive.ExtractToDirectory(System.String,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
rỗng, chỉ chứa khoảng trắng hoặc chứa các ký tự không hợp lệ.
Truy cập vào tệp path
bị từ chối.
path
, tên tệp hoặc cả hai vượt quá độ dài tối đa do hệ thống xác định. Ví dụ: trên các nền tảng Windows, đườ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 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 đã được mở.
SevenZipArchive(string[], string)
Khởi tạo một thể hiện mới của lớp Aspose.Zip.SevenZip.SevenZipArchive từ lưu trữ 7z nhiều tập và tạo danh sách các mục có thể được giải nén từ lưu trữ.
public SevenZipArchive(string[] parts, string password = null)
Tham số
parts
string[]
Đường dẫn đến từng phần của lưu trữ 7z nhiều tập theo thứ tự
password
string
Mật khẩu tùy chọn cho việc giải mã. Nếu tên tệp được mã hóa, nó phải có mặt.
Ví dụ
using (SevenZipArchive archive = new SevenZipArchive(new string[] { "multi.7z.001", "multi.7z.002", "multi.7z.003" }))
{
archive.ExtractToDirectory("C:\\extracted");
}
Ngoại lệ
parts
là null.
parts
không có mục nào.
Người gọi không có quyền truy cập cần thiết.
Đường dẫn đến tệp rỗng, chỉ chứa khoảng trắng hoặc chứa các ký tự không hợp lệ.
Truy cập vào một tệp bị từ chối.
Đường dẫn được chỉ định đến một phần, tên tệp, hoặc cả hai vượt quá độ dài tối đa do hệ thống xác định. Ví dụ: trên các nền tảng Windows, đườ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 đường dẫn chứa dấu hai chấm (:) ở giữa chuỗi.
Thuộc tính
Entries
Lấy các mục của loại Aspose.Zip.SevenZip.SevenZipArchiveEntry cấu thành lưu trữ.
public ReadOnlyCollection<sevenziparchiveentry> Entries { get; }
Giá trị thuộc tính
ReadOnlyCollection<SevenZipArchiveEntry>
NewEntrySettings
Các cài đặt nén và mã hóa được sử dụng cho các mục Aspose.Zip.SevenZip.SevenZipArchiveEntry mới được thêm vào.
public SevenZipEntrySettings NewEntrySettings { get; }
Giá trị thuộc tính
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 được cho.
public SevenZipArchive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)
Tham số
directory
DirectoryInfo
Thư mục để nén.
includeRootDirectory
bool
Cho biết có nên 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 (SevenZipArchive archive = new SevenZipArchive())
{
DirectoryInfo folder = new DirectoryInfo("C:\folder");
archive.CreateEntries(folder);
archive.Save("folder.7z");
}
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 được cho.
public SevenZipArchive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)
Tham số
sourceDirectory
string
Thư mục để nén.
includeRootDirectory
bool
Cho biết có nên 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ụ
Tạo lưu trữ 7z với nén LZMA2.
using (SevenZipArchive archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMACompressionSettings())))
{
archive.CreateEntries("C:\folder");
archive.Save("folder.7z");
}
CreateEntry(string, FileInfo, bool, SevenZipEntrySettings)
Tạo một mục đơn trong lưu trữ.
public SevenZipArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, SevenZipEntrySettings 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, nếu không thì mở tệp khi lưu trữ được lưu.
newEntrySettings
SevenZipEntrySettings
Các cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.SevenZip.SevenZipArchiveEntry đã thêm.
Trả về
Thể hiện mục Seven Zip.
Ví dụ
Tạo lưu trữ với các mục được mã hóa bằng các mật khẩu khác nhau.
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);
}
}
Nhận xét
Tên mục chỉ được đặt 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 đã được mở.
CreateEntry(string, Stream, SevenZipEntrySettings, FileSystemInfo)
Tạo một mục đơn trong lưu trữ.
public SevenZipArchiveEntry CreateEntry(string name, Stream source, SevenZipEntrySettings newEntrySettings, FileSystemInfo fileInfo)
Tham số
name
string
Tên của mục.
source
Stream
Luồng đầu vào cho mục.
newEntrySettings
SevenZipEntrySettings
Các cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.SevenZip.SevenZipArchiveEntry đã 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 SevenZip.
Ví dụ
Tạo lưu trữ với mục được nén bằng LZMA2 và mã hóa.
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("entry1.bin", new MemoryStream(new byte[] {0x00, 0xFF}), new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("test1")), new FileInfo("data1.bin"));
archive.Save(sevenZipFile);
}
}
Nhận xét
Tên mục chỉ được đặt 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 là null hoặc source
là null và fileInfo
là thư mục.
CreateEntry(string, Stream, SevenZipEntrySettings)
Tạo một mục đơn trong lưu trữ.
public SevenZipArchiveEntry CreateEntry(string name, Stream source, SevenZipEntrySettings newEntrySettings = null)
Tham số
name
string
Tên của mục.
source
Stream
Luồng đầu vào cho mục.
newEntrySettings
SevenZipEntrySettings
Các cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.SevenZip.SevenZipArchiveEntry đã thêm.
Trả về
Thể hiện mục Zip.
Ví dụ
Tạo lưu trữ 7z với nén LZMA2 và mã hóa tất cả các mục.
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings(), new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] {0x00, 0xFF} ));
archive.Save("archive.7z");
}
CreateEntry(string, string, bool, SevenZipEntrySettings)
Tạo một mục đơn trong lưu trữ.
public SevenZipArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, SevenZipEntrySettings newEntrySettings = null)
Tham số
name
string
Tên của mục.
path
string
Tên tệp đầy đủ 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, nếu không thì mở tệp khi lưu trữ được lưu.
newEntrySettings
SevenZipEntrySettings
Các cài đặt nén và mã hóa được sử dụng cho mục Aspose.Zip.SevenZip.SevenZipArchiveEntry đã thêm.
Trả về
Thể hiện mục Zip.
Ví dụ
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings())))
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
Nhận xét
Tên mục chỉ được đặt 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
rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.
Truy cập vào tệp path
bị từ chối.
path
, tên tệp, hoặc cả hai vượt quá độ dài tối đa do hệ thống xác định. Ví dụ: trên các nền tảng Windows, đườ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 dấu hai chấm (:) ở giữa chuỗi.
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, phát hành 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, phát hành 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, string)
Giải nén tất cả các tệp trong lưu trữ vào thư mục được cung cấp.
public void ExtractToDirectory(string destinationDirectory, string password = null)
Tham số
destinationDirectory
string
Đường dẫn đến thư mục để đặt các tệp đã giải nén.
password
string
Mật khẩu tùy chọn cho việc giải mã nội dung.
Ví dụ
using (var archive = new SevenZipArchive("archive.7z"))
{
archive.ExtractToDirectory("C:\extracted");
}
Nhận xét
Nếu thư mục không tồn tại, nó sẽ được tạo.
password
chỉ được sử dụng cho việc giải mã nội dung. Nếu tên tệp được mã hóa, hãy cung cấp mật khẩu trong hàm khởi tạo Aspose.Zip.SevenZip.SevenZipArchive.#ctor(System.String,System.String) hoặc Aspose.Zip.SevenZip.SevenZipArchive.#ctor(System.IO.Stream,System.String).
Ngoại lệ
destinationDirectory
là null.
path
, tên tệp, hoặc cả hai vượt quá độ dài tối đa do hệ thống xác định. Ví dụ: trên các nền tảng Windows, đườ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 ký tự dấu hai chấm (:) không phải là một phần của nhãn ổ đĩa (“C:").
destinationDirectory
là chuỗi có độ dài bằng không, 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ự dấu 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.
Lưu trữ bị hỏng.
Save(Stream)
Lưu trữ 7z vào luồng được cung cấp.
public void Save(Stream output)
Tham số
output
Stream
Luồng đích.
Ví dụ
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data", source);
archive.Save(sevenZipFile);
}
}
}
Nhận xét
output
phải có khả năng tìm kiếm.
Ngoại lệ
output
không hỗ trợ tìm kiếm.
output
là null.
Bộ mã hóa không thành công trong việc nén dữ liệu.
Save(string)
Lưu trữ vào tệp đích được cung cấp.
public void Save(string destinationFileName)
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 hiện có, nó sẽ bị ghi đè.
Ví dụ
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMACompressionSettings())))
{
archive.CreateEntry("data", source);
archive.Save("archive.7z");
}
}
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
rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.
Truy cập vào tệp destinationFileName
bị từ chối.
destinationFileName
, tên tệp, hoặc cả hai vượt quá độ dài tối đa do hệ thống xác định. Ví dụ: trên các nền tảng Windows, đườ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 dấu hai chấm (:) ở giữa chuỗi.
SaveSplit(string, SplitSevenZipArchiveSaveOptions)
Lưu trữ nhiều tập vào thư mục đích được cung cấp.
public void SaveSplit(string destinationDirectory, SplitSevenZipArchiveSaveOptions 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
SplitSevenZipArchiveSaveOptions
Các tùy chọn cho việc lưu trữ, bao gồm tên tệp.
Ví dụ
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntry("entry.bin", "data.bin");
archive.SaveSplit(@"C:\Folder", new SplitSevenZipArchiveSaveOptions("volume", 65536));
}
Nhận xét
Phương thức này tạo ra một số (n
) tệp với tên filename.7z.001, filename.7z.002, ..., filename.7z.(n).
Không thể biến một lưu trữ hiện có thành nhiều tập.
Ngoại lệ
Lưu trữ này đã được mở từ nguồn hiện có.
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 |.