Class Archive

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

objectArchive

Triển khai

IArchive, IDisposable

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ệ

ArgumentException

sourceStream không thể tìm kiếm.

InvalidDataException

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ệ

ArgumentNullException

path là null.

SecurityException

Người gọi không có quyền truy cập cần thiết.

ArgumentException

path là rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.

UnauthorizedAccessException

Quyền truy cập vào tệp path bị từ chối.

PathTooLongException

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ự.

NotSupportedException

Tệp tại path chứa một dấu hai chấm (:) ở giữa chuỗi.

FileNotFoundException

Tệp không được tìm thấy.

DirectoryNotFoundException

Đườ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ạ.

IOException

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ệ

EndOfStreamException

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&gt;

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

ArchiveEntrySettings

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ề

Archive

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ệ

DirectoryNotFoundException

Đườ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ạ.

SecurityException

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ề

Archive

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ề

ArchiveEntry

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ệ

ArgumentNullException

path là null.

SecurityException

Người gọi không có quyền truy cập cần thiết.

ArgumentException

path là rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.

UnauthorizedAccessException

Quyền truy cập vào tệp path bị từ chối.

PathTooLongException

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ự.

NotSupportedException

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ề

ArchiveEntry

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ề

ArchiveEntry

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ệ

UnauthorizedAccessException

fileInfo là chỉ đọc hoặc là một thư mục.

DirectoryNotFoundException

Đườ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ạ.

IOException

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ề

ArchiveEntry

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ệ

InvalidOperationException

Cả sourcefileInfo đề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&gt;

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ề

ArchiveEntry

Thể hiện mục zip.

Ví dụ

Tạo lưu trữ với mục được mã hóa.

System.Func&lt;Stream&gt; 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ề

Archive

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 &gt; 1)
        archive.DeleteEntry(archive.Entries[0]);
    archive.Save("last_entry.zip");
}

Ngoại lệ

ObjectDisposedException

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ề

Archive

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ệ

ObjectDisposedException

Lưu trữ đã bị hủy.

ArgumentOutOfRangeException

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ệ

ArgumentNullException

destinationDirectory là null.

PathTooLongException

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ự.

SecurityException

Người gọi không có quyền truy cập cần thiết vào thư mục hiện có.

NotSupportedException

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:").

ArgumentException

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 (:).

IOException

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.

InvalidDataException

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ệ

ArgumentException

outputStream không thể ghi.

ObjectDisposedException

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ệ

ArgumentNullException

destinationFileName là null.

SecurityException

Người gọi không có quyền truy cập cần thiết.

ArgumentException

destinationFileName là rỗng, chỉ chứa khoảng trắng, hoặc chứa các ký tự không hợp lệ.

UnauthorizedAccessException

Quyền truy cập vào tệp destinationFileName bị từ chối.

PathTooLongException

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ự.

NotSupportedException

Tệp tại destinationFileName chứa một dấu hai chấm (:) ở giữa chuỗi.

FileNotFoundException

Tệp không được tìm thấy.

DirectoryNotFoundException

Đườ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ạ.

IOException

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ệ

InvalidOperationException

Lưu trữ này đã được mở từ nguồn hiện có.

NotSupportedException

Lưu trữ này vừa được nén bằng phương pháp XZ vừa được mã hóa.

ArgumentNullException

destinationDirectory là null.

SecurityException

Người gọi không có quyền truy cập cần thiết vào thư mục.

ArgumentException

destinationDirectory chứa các ký tự không hợp lệ như “, >, <, hoặc |.

PathTooLongException

Đường dẫn được chỉ định vượt quá chiều dài tối đa do hệ thống xác định.

ObjectDisposedException

Lưu trữ đã bị hủy.

 Tiếng Việt