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
Mengimplementasikan
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
sourceStream
tidak dapat dicari.
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
path
adalah null.
Pemanggil tidak memiliki izin yang diperlukan untuk mengakses.
path
kosong, hanya berisi spasi putih, atau berisi karakter tidak valid.
Akses ke file path
ditolak.
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.
File di path
mengandung titik dua (:) di tengah string.
File tidak ditemukan.
Path yang ditentukan tidak valid, seperti berada di drive yang tidak dipetakan.
File sudah terbuka.
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
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>
NewEntrySettings
Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang baru ditambahkan.
public ArchiveEntrySettings NewEntrySettings { get; }
Nilai Properti
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
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
Path ke directory
tidak valid, seperti berada di drive yang tidak dipetakan.
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
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
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
path
adalah null.
Pemanggil tidak memiliki izin yang diperlukan untuk mengakses.
path
kosong, hanya berisi spasi putih, atau berisi karakter tidak valid.
Akses ke file path
ditolak.
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.
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
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
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
fileInfo
bersifat hanya-baca atau merupakan direktori.
Path yang ditentukan tidak valid, seperti berada di drive yang tidak dipetakan.
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
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
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>
Metode yang menyediakan stream input untuk entri.
newEntrySettings
ArchiveEntrySettings
Pengaturan kompresi dan enkripsi yang digunakan untuk item Aspose.Zip.ArchiveEntry yang ditambahkan.
Mengembalikan
Instansi entri zip.
Contoh
Menyusun arsip dengan entri terenkripsi.
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);
}
}
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
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 > 1)
archive.DeleteEntry(archive.Entries[0]);
archive.Save("last_entry.zip");
}
Pengecualian
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
Arsip dengan entri yang dihapus.
Contoh
using (var archive = new TarArchive("two_files.zip"))
{
archive.DeleteEntry(0);
archive.Save("single_file.zip");
}
Pengecualian
Arsip telah dibuang.
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
destinationDirectory
adalah null.
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.
Pemanggil tidak memiliki izin yang diperlukan untuk mengakses direktori yang ada.
Jika direktori tidak ada, path mengandung karakter titik dua (:) yang bukan bagian dari label drive (“C:").
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 (:).
Direktori yang ditentukan oleh path adalah file. -atau- Nama jaringan tidak dikenal.
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
outputStream
tidak dapat ditulis.
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
destinationFileName
adalah null.
Pemanggil tidak memiliki izin yang diperlukan untuk mengakses.
destinationFileName
kosong, hanya berisi spasi putih, atau berisi karakter tidak valid.
Akses ke file destinationFileName
ditolak.
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.
File di destinationFileName
mengandung titik dua (:) di tengah string.
File tidak ditemukan.
Path yang ditentukan tidak valid, seperti berada di drive yang tidak dipetakan.
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
Arsip ini dibuka dari sumber yang ada.
Arsip ini baik terkompresi dengan metode XZ dan dienkripsi.
destinationDirectory
adalah null.
Pemanggil tidak memiliki izin yang diperlukan untuk mengakses direktori.
destinationDirectory
mengandung karakter tidak valid seperti “, >, <, atau |.
Path yang ditentukan melebihi panjang maksimum yang ditentukan oleh sistem.
Arsip telah dibuang.