Class Archive

Class Archive

Namespace: Aspose.Zip
Assembly: Aspose.Zip.dll (25.1.0)

Kelas ini merepresentasikan file arsip zip. Gunakan ini untuk menyusun, mengekstrak, atau memperbarui arsip zip.

public class Archive : IArchive, IDisposable

Warisan

objectArchive

Mengimplementasikan

IArchive, IDisposable

Anggota yang Dwarisi

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Konstruktor

Archive(ArchiveEntrySettings)

Menginisialisasi instance baru dari kelas Aspose.Zip.Archive dengan pengaturan opsional untuk entri-entri nya.

public Archive(ArchiveEntrySettings newEntrySettings = null)

Parameter

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang baru ditambahkan. Jika tidak ditentukan, kompresi Deflate yang paling umum tanpa enkripsi akan digunakan.

Contoh

Contoh berikut menunjukkan cara mengompres satu file dengan pengaturan default.

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)

Menginisialisasi instance baru dari kelas Aspose.Zip.Archive dan menyusun daftar entri yang dapat diekstrak dari arsip.

public Archive(Stream sourceStream, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

Parameter

sourceStream Stream

Sumber arsip.

loadOptions ArchiveLoadOptions

Opsi untuk memuat arsip yang ada.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang baru ditambahkan. Jika tidak ditentukan, kompresi Deflate yang paling umum tanpa enkripsi akan digunakan.

Contoh

Contoh berikut mengekstrak arsip terenkripsi, kemudian mendekompresi entri pertama ke 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);
    }
}

Keterangan

Konstruktor ini tidak mendekompresi entri apapun. Lihat metode Aspose.Zip.ArchiveEntry.Open(System.String) untuk mendekompresi.

Pengecualian

ArgumentException

sourceStream tidak dapat dicari.

InvalidDataException

Header enkripsi untuk AES bertentangan dengan metode kompresi WinZip.

Archive(string, ArchiveLoadOptions, ArchiveEntrySettings)

Menginisialisasi instance baru dari kelas Aspose.Zip.Archive dan menyusun daftar entri yang dapat diekstrak dari arsip.

public Archive(string path, ArchiveLoadOptions loadOptions = null, ArchiveEntrySettings newEntrySettings = null)

Parameter

path string

Path yang sepenuhnya memenuhi syarat atau path relatif ke file arsip.

loadOptions ArchiveLoadOptions

Opsi untuk memuat arsip yang ada.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang baru ditambahkan. Jika tidak ditentukan, kompresi Deflate yang paling umum tanpa enkripsi akan digunakan.

Contoh

Contoh berikut mengekstrak arsip terenkripsi, kemudian mendekompresi entri pertama ke 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);
    }
}

Keterangan

Konstruktor ini tidak mendekompresi entri apapun. Lihat metode Aspose.Zip.ArchiveEntry.Open(System.String) untuk mendekompresi.

Pengecualian

ArgumentNullException

path adalah null.

SecurityException

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses.

ArgumentException

path kosong, hanya berisi spasi putih, atau berisi karakter tidak valid.

UnauthorizedAccessException

Akses ke file path ditolak.

PathTooLongException

path, nama file, atau keduanya melebihi panjang maksimum yang ditentukan oleh sistem. Misalnya, pada platform berbasis Windows, path harus kurang dari 248 karakter, dan nama file harus kurang dari 260 karakter.

NotSupportedException

File di path mengandung titik dua (:) di tengah string.

FileNotFoundException

File tidak ditemukan.

DirectoryNotFoundException

Path yang ditentukan tidak valid, seperti berada di drive yang tidak dipetakan.

IOException

File sudah terbuka.

InvalidDataException

File rusak.

Archive(string, string[], ArchiveLoadOptions)

Menginisialisasi instance baru dari kelas Aspose.Zip.Archive dari arsip zip multi-volume dan menyusun daftar entri yang dapat diekstrak dari arsip.

public Archive(string mainSegment, string[] segmentsInOrder, ArchiveLoadOptions loadOptions = null)

Parameter

mainSegment string

Path ke segmen terakhir dari arsip multi-volume dengan direktori pusat.

Biasanya segmen ini memiliki ekstensi *.zip dan lebih kecil dari yang lain.

segmentsInOrder string[]

Path ke setiap segmen tetapi yang terakhir dari arsip zip multi-volume menghormati urutan.

Biasanya mereka dinamakan filename.z01, filename.z02, ..., filename.z(n-1).

loadOptions ArchiveLoadOptions

Opsi untuk memuat arsip yang ada.

Contoh

Contoh ini mengekstrak ke direktori arsip dari tiga segmen.

using (Archive a = new Archive("archive.zip", new string[] { "archive.z01", "archive.z02" }))
{
    a.ExtractToDirectory("destination");
}

Pengecualian

EndOfStreamException

Tidak dapat memuat header ZIP karena file yang diberikan rusak.

Properti

Entries

Mendapatkan entri dari tipe Aspose.Zip.ArchiveEntry yang membentuk arsip.

public ReadOnlyCollection<archiveentry> Entries { get; }

Nilai Properti

ReadOnlyCollection<ArchiveEntry&gt;

NewEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang baru ditambahkan.

public ArchiveEntrySettings NewEntrySettings { get; }

Nilai Properti

ArchiveEntrySettings

Metode

CreateEntries(DirectoryInfo, bool)

Menambahkan ke arsip semua file dan direktori secara rekursif di direktori yang diberikan.

public Archive CreateEntries(DirectoryInfo directory, bool includeRootDirectory = true)

Parameter

directory DirectoryInfo

Direktori untuk dikompresi.

includeRootDirectory bool

Menunjukkan apakah akan menyertakan direktori root itu sendiri atau tidak.

Mengembalikan

Archive

Arsip dengan entri yang disusun.

Contoh

using (Archive archive = new Archive())
{
    DirectoryInfo folder = new DirectoryInfo("C:\folder");
    archive.CreateEntries(folder);
    archive.Save("folder.zip");
}

Pengecualian

DirectoryNotFoundException

Path ke directory tidak valid, seperti berada di drive yang tidak dipetakan.

SecurityException

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses directory.

CreateEntries(string, bool)

Menambahkan ke arsip semua file dan direktori secara rekursif di direktori yang diberikan.

public Archive CreateEntries(string sourceDirectory, bool includeRootDirectory = true)

Parameter

sourceDirectory string

Direktori untuk dikompresi.

includeRootDirectory bool

Menunjukkan apakah akan menyertakan direktori root itu sendiri atau tidak.

Mengembalikan

Archive

Arsip dengan entri yang disusun.

Contoh

using (Archive archive = new Archive())
{
    archive.CreateEntries("C:\folder");
    archive.Save("folder.zip");
}

CreateEntry(string, string, bool, ArchiveEntrySettings)

Membuat entri tunggal dalam arsip.

public ArchiveEntry CreateEntry(string name, string path, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

Parameter

name string

Nama entri.

path string

Nama file baru yang memenuhi syarat, atau nama file relatif yang akan dikompresi.

openImmediately bool

True jika membuka file segera, jika tidak buka file saat arsip disimpan.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang ditambahkan.

Mengembalikan

ArchiveEntry

Instansi entri zip.

Contoh

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(zipFile);
    }
}

Keterangan

Nama entri hanya ditetapkan dalam parameter name. Nama file yang diberikan dalam parameter path tidak mempengaruhi nama entri.

Jika file dibuka segera dengan parameter openImmediately, itu akan terblokir sampai arsip disimpan.

Pengecualian

ArgumentNullException

path adalah null.

SecurityException

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses.

ArgumentException

path kosong, hanya berisi spasi putih, atau berisi karakter tidak valid.

UnauthorizedAccessException

Akses ke file path ditolak.

PathTooLongException

path, nama file, atau keduanya melebihi panjang maksimum yang ditentukan oleh sistem. Misalnya, pada platform berbasis Windows, path harus kurang dari 248 karakter, dan nama file harus kurang dari 260 karakter.

NotSupportedException

File di path mengandung titik dua (:) di tengah string.

CreateEntry(string, Stream, ArchiveEntrySettings)

Membuat entri tunggal dalam arsip.

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings = null)

Parameter

name string

Nama entri.

source Stream

Stream input untuk entri.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang ditambahkan.

Mengembalikan

ArchiveEntry

Instansi entri zip.

Contoh

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)

Membuat entri tunggal dalam arsip.

public ArchiveEntry CreateEntry(string name, FileInfo fileInfo, bool openImmediately = false, ArchiveEntrySettings newEntrySettings = null)

Parameter

name string

Nama entri.

fileInfo FileInfo

Metadata dari file yang akan dikompresi.

openImmediately bool

True jika membuka file segera, jika tidak buka file saat arsip disimpan.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang ditambahkan.

Mengembalikan

ArchiveEntry

Instansi entri zip.

Contoh

Menyusun arsip dengan entri yang dienkripsi dengan metode enkripsi dan kata sandi yang berbeda masing-masing.

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);
    }
}

Keterangan

Nama entri hanya ditetapkan dalam parameter name. Nama file yang diberikan dalam parameter fileInfo tidak mempengaruhi nama entri.

Jika file dibuka segera dengan parameter openImmediately, itu akan terblokir sampai arsip disimpan.

Pengecualian

UnauthorizedAccessException

fileInfo bersifat hanya-baca atau merupakan direktori.

DirectoryNotFoundException

Path yang ditentukan tidak valid, seperti berada di drive yang tidak dipetakan.

IOException

File sudah terbuka.

CreateEntry(string, Stream, ArchiveEntrySettings, FileSystemInfo)

Membuat entri tunggal dalam arsip.

public ArchiveEntry CreateEntry(string name, Stream source, ArchiveEntrySettings newEntrySettings, FileSystemInfo fileInfo)

Parameter

name string

Nama entri.

source Stream

Stream input untuk entri.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang ditambahkan.

fileInfo FileSystemInfo

Metadata dari file atau folder yang akan dikompresi.

Mengembalikan

ArchiveEntry

Instansi entri zip.

Contoh

Menyusun arsip dengan entri terenkripsi.

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);
    }
}

Keterangan

Nama entri hanya ditetapkan dalam parameter name. Nama file yang diberikan dalam parameter fileInfo tidak mempengaruhi nama entri.

fileInfo dapat merujuk ke System.IO.DirectoryInfo jika entri adalah direktori.

Pengecualian

InvalidOperationException

Keduanya source dan fileInfo adalah null atau source adalah null dan fileInfo merujuk ke direktori.

CreateEntry(string, Func<stream>, ArchiveEntrySettings)

Membuat entri tunggal dalam arsip.

public ArchiveEntry CreateEntry(string name, Func<stream> streamProvider, ArchiveEntrySettings newEntrySettings = null)

Parameter

name string

Nama entri.

streamProvider Func<Stream&gt;

Metode yang menyediakan stream input untuk entri.

newEntrySettings ArchiveEntrySettings

Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang ditambahkan.

Mengembalikan

ArchiveEntry

Instansi entri zip.

Contoh

Menyusun arsip dengan entri terenkripsi.

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);
    }
}

Keterangan

Metode ini untuk .NET Framework 4.0 dan di atas dan untuk versi .NET Standard 2.0.

DeleteEntry(ArchiveEntry)

Menghapus kemunculan pertama dari entri tertentu dari daftar entri.

public Archive DeleteEntry(ArchiveEntry entry)

Parameter

entry ArchiveEntry

Entri yang akan dihapus dari daftar entri.

Mengembalikan

Archive

Arsip dengan entri yang dihapus.

Contoh

Berikut adalah cara Anda dapat menghapus semua entri kecuali yang terakhir:

using (var archive = new Archive("archive.zip"))
{
    while (archive.Entries.Count &gt; 1)
        archive.DeleteEntry(archive.Entries[0]);
    archive.Save("last_entry.zip");
}

Pengecualian

ObjectDisposedException

Arsip telah dibuang.

DeleteEntry(int)

Menghapus entri dari daftar entri berdasarkan indeks.

public Archive DeleteEntry(int entryIndex)

Parameter

entryIndex int

Indeks berbasis nol dari entri yang akan dihapus.

Mengembalikan

Archive

Arsip dengan entri yang dihapus.

Contoh

using (var archive = new TarArchive("two_files.zip"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.zip");
}

Pengecualian

ObjectDisposedException

Arsip telah dibuang.

ArgumentOutOfRangeException

entryIndex kurang dari 0.-atau- entryIndex sama dengan atau lebih besar dari jumlah Entries.

Dispose()

Melakukan tugas yang ditentukan oleh aplikasi terkait dengan membebaskan, melepaskan, atau mereset sumber daya yang tidak dikelola.

public void Dispose()

Dispose(bool)

Melakukan tugas yang ditentukan oleh aplikasi terkait dengan membebaskan, melepaskan, atau mereset sumber daya yang tidak dikelola.

protected virtual void Dispose(bool disposing)

Parameter

disposing bool

Apakah sumber daya yang dikelola harus dibuang.

ExtractToDirectory(string)

Mengekstrak semua file dalam arsip ke direktori yang diberikan.

public void ExtractToDirectory(string destinationDirectory)

Parameter

destinationDirectory string

Path ke direktori untuk menempatkan file yang diekstrak.

Contoh

using (var archive = new Archive("archive.zip")) 
{ 
   archive.ExtractToDirectory("C:\extracted");
}

Keterangan

Jika direktori tidak ada, itu akan dibuat.

Pengecualian

ArgumentNullException

destinationDirectory adalah null.

PathTooLongException

Path yang ditentukan, nama file, atau keduanya melebihi panjang maksimum yang ditentukan oleh sistem. Misalnya, pada platform berbasis Windows, path harus kurang dari 248 karakter dan nama file harus kurang dari 260 karakter.

SecurityException

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses direktori yang ada.

NotSupportedException

Jika direktori tidak ada, path mengandung karakter titik dua (:) yang bukan bagian dari label drive (“C:").

ArgumentException

destinationDirectory adalah string dengan panjang nol, hanya berisi spasi putih, atau berisi satu atau lebih karakter tidak valid. Anda dapat menanyakan karakter tidak valid dengan menggunakan metode System.IO.Path.GetInvalidPathChars. -atau- path diawali dengan, atau hanya berisi, karakter titik dua (:).

IOException

Direktori yang ditentukan oleh path adalah file. -atau- Nama jaringan tidak dikenal.

InvalidDataException

Kata sandi yang salah telah diberikan. - atau - Arsip rusak.

Save(Stream, ArchiveSaveOptions)

Menyimpan arsip ke stream yang diberikan.

public void Save(Stream outputStream, ArchiveSaveOptions saveOptions = null)

Parameter

outputStream Stream

Stream tujuan.

saveOptions ArchiveSaveOptions

Opsi untuk penyimpanan arsip.

Contoh

using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
    using (var archive = new Archive())
    {
        archive.CreateEntry("entry.bin", "data.bin");
        archive.Save(zipFile);
    }
}

Keterangan

outputStream harus dapat ditulis.

Pengecualian

ArgumentException

outputStream tidak dapat ditulis.

ObjectDisposedException

Arsip telah dibuang.

Save(string, ArchiveSaveOptions)

Menyimpan arsip ke file tujuan yang diberikan.

public void Save(string destinationFileName, ArchiveSaveOptions saveOptions = null)

Parameter

destinationFileName string

Path arsip yang akan dibuat. Jika nama file yang ditentukan mengarah ke file yang ada, file tersebut akan ditimpa.

saveOptions ArchiveSaveOptions

Opsi untuk penyimpanan arsip.

Contoh

using (var archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.Save("archive.zip",  new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}

Keterangan

Dimungkinkan untuk menyimpan arsip ke path yang sama seperti yang dimuat dari. Namun, ini tidak disarankan karena pendekatan ini menggunakan penyalinan ke file sementara.

Pengecualian

ArgumentNullException

destinationFileName adalah null.

SecurityException

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses.

ArgumentException

destinationFileName kosong, hanya berisi spasi putih, atau berisi karakter tidak valid.

UnauthorizedAccessException

Akses ke file destinationFileName ditolak.

PathTooLongException

destinationFileName, nama file, atau keduanya melebihi panjang maksimum yang ditentukan oleh sistem. Misalnya, pada platform berbasis Windows, path harus kurang dari 248 karakter, dan nama file harus kurang dari 260 karakter.

NotSupportedException

File di destinationFileName mengandung titik dua (:) di tengah string.

FileNotFoundException

File tidak ditemukan.

DirectoryNotFoundException

Path yang ditentukan tidak valid, seperti berada di drive yang tidak dipetakan.

IOException

File sudah terbuka.

SaveSplit(string, SplitArchiveSaveOptions)

Menyimpan arsip multi-volume ke direktori tujuan yang diberikan.

public void SaveSplit(string destinationDirectory, SplitArchiveSaveOptions options)

Parameter

destinationDirectory string

Path ke direktori di mana segmen arsip akan dibuat.

options SplitArchiveSaveOptions

Opsi untuk penyimpanan arsip, termasuk nama file.

Contoh

using (Archive archive = new Archive())
{
    archive.CreateEntry("entry.bin", "data.bin");
    archive.SaveSplit(@"C:\Folder",  new SplitArchiveSaveOptions("volume", 65536));
}

Keterangan

Metode ini menyusun beberapa (n) file filename.z01, filename.z02, ..., filename.z(n-1), filename.zip.

Tidak dapat membuat arsip yang ada menjadi multi-volume.

Pengecualian

InvalidOperationException

Arsip ini dibuka dari sumber yang ada.

NotSupportedException

Arsip ini baik terkompresi dengan metode XZ dan dienkripsi.

ArgumentNullException

destinationDirectory adalah null.

SecurityException

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses direktori.

ArgumentException

destinationDirectory mengandung karakter tidak valid seperti “, >, <, atau |.

PathTooLongException

Path yang ditentukan melebihi panjang maksimum yang ditentukan oleh sistem.

ObjectDisposedException

Arsip telah dibuang.

 Indonesia