Ekstrak File Arsip di C# dan .NET
Bongkar ZIP dan format arsip lain secara terprogram dalam aplikasi .NET.
Ekstraksi File Arsip di .NET
Aspose.ZIP for .NET adalah library terkelola untuk membuka arsip dan mengekstrak isinya dari aplikasi C#. API-nya memungkinkan Anda membaca entri arsip, mengekstrak semua item atau hanya item tertentu, mempertahankan struktur direktori, serta menulis output ke folder atau stream. Semua pemrosesan tetap berada di dalam aplikasi, sehingga workflow server tidak bergantung pada software desktop atau utilitas command-line.
Kasus penggunaan umum mencakup ingest dokumen, pemulihan backup, pemrosesan paket deployment, pengolahan file unggahan, dan pertukaran data otomatis. API yang sama dapat berjalan di layanan ASP.NET, background worker, aplikasi desktop, job cloud, dan pipeline CI/CD.
Alur kerja yang tepat bergantung pada format. ZIP, 7Z, RAR, TAR, dan CAB memiliki struktur kontainer, metode kompresi, dan class API yang berbeda. Halaman ini menjelaskan proses ekstraksi bersama; panduan per format kemudian memberi class, opsi, dan batasan yang tepat untuk setiap jenis arsip.
Apa Itu Ekstraktor File Arsip?
Ekstraktor arsip membuka kontainer yang menyimpan satu atau beberapa file, lalu memulihkan konten yang tersimpan di dalamnya. Proses ini biasanya membaca metadata arsip, mengidentifikasi entri dan direktori, mendekompresi data, lalu menulis hasilnya ke lokasi yang disetujui. Arsip terenkripsi juga membutuhkan kredensial yang valid dan pengaturan yang didukung oleh format tersebut.
Istilah extract, unpack, dan decompress sering dipakai untuk operasi yang mirip. Saat developer mengatakan perlu membongkar ZIP, maksudnya adalah mengambil konten dari kontainer ZIP. Ekstraksi arsip adalah operasi yang lebih luas dan juga mencakup format seperti 7Z, RAR, TAR, CAB, CPIO, dan XZ.
Di lingkungan produksi, ekstraksi bukan hanya satu pemanggilan metode. Aplikasi mungkin perlu memeriksa nama entri, memilih item tertentu, mempertahankan folder, menerima stream, menangani kata sandi, melaporkan kegagalan, dan menegakkan batas sebelum menulis apa pun ke penyimpanan permanen.
Cara Kerja Ekstraksi Arsip
Workflow C# yang umum memiliki tujuh tahap:
- Menerima arsip dari jalur lokal, unggahan, stream, atau layanan penyimpanan.
- Memastikan format arsip didukung oleh aplikasi.
- Membuka kontainer dengan class API yang dirancang untuk format tersebut.
- Memeriksa entri arsip saat filtering atau ekstraksi selektif diperlukan.
- Memvalidasi jalur output dan batas resource sebelum menulis file.
- Mengekstrak entri yang disetujui ke tujuan yang terisolasi.
- Meneruskan output ke tahap aplikasi berikutnya lalu menghapus data sementara.
Class pembuka bergantung pada tipe input karena ZIP, 7Z, RAR, TAR, dan CAB tidak memiliki model internal yang identik. Sebuah layanan tetap dapat menyediakan satu workflow tingkat aplikasi sambil mengarahkan setiap kontainer ke API Aspose.ZIP yang sesuai.
Format Arsip yang Tersedia untuk Ekstraksi
Library ini bekerja dengan format arsip dan kompresi populer, termasuk ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB, dan WIM. Operasi yang tersedia berbeda-beda karena sebagian format berisi banyak entri, sementara yang lain mewakili satu stream terkompresi atau kontainer TAR yang dibungkus lapisan kompresi lain.
Pilih handler yang sesuai dengan kontainer sebenarnya, bukan hanya berdasarkan ekstensi nama file. Untuk setiap format, pastikan operasi, metode enkripsi, dan perilaku stream yang dibutuhkan memang didukung sebelum menambahkannya ke pipeline otomatis.
Workflow Ekstraksi File yang Umum
Bongkar seluruh arsip. Gunakan ekstraksi penuh jika semua entri diperlukan dan input sudah lolos validasi. Pertahankan hierarki direktori asli bila diperlukan, dan berikan tujuan unik untuk setiap job agar permintaan paralel tidak menimpa atau mencampur output.
Ambil hanya entri tertentu. Telusuri Archive.Entries dan terapkan aturan aplikasi sebelum menulis data. Ini berguna saat paket berisi banyak aset tetapi workflow hanya membutuhkan dokumen, manifest, file konfigurasi, atau folder tertentu.
Proses stream. Input berbasis stream cocok untuk unggahan ASP.NET, object storage, database, dan sistem berbasis pesan. Buat kepemilikan dan masa hidup stream eksplisit, dan hindari memuat arsip tak terbatas sepenuhnya ke memori.
Buka konten terlindungi. Berikan kredensial melalui pengaturan dekripsi yang tersedia untuk format terkait. Kata sandi harus berasal dari konfigurasi terlindungi atau secret store dan tidak boleh ditulis ke log.
Tangani input besar sebagai job berbatas. Batasi ukuran terkompresi, ukuran hasil ekstraksi, jumlah entri, waktu pemrosesan, dan penggunaan penyimpanan sementara. Tetapkan batas ini di aplikasi, bukan dengan menganggap ekstensi file sebagai tanda kepercayaan.
Tambahkan Aspose.ZIP ke Proyek C#
Instal paket NuGet Aspose.ZIP di proyek C# yang menargetkan lingkungan .NET yang didukung di Windows, Linux, atau macOS. Setelah itu, gunakan namespace yang diperlukan dan pilih class yang sesuai dengan kontainer input. Proses ini juga membutuhkan akses baca ke sumber, akses tulis ke tujuan, dan penyimpanan sementara yang cukup untuk batas ekspansi yang dikonfigurasi.
Gunakan perintah Package Manager Console berikut:
Package Manager Console
PM> Install-Package Aspose.Zip
Contoh C#: Bongkar File ZIP
ZIP memberi contoh ringkas untuk workflow bersama. Kode membuka input dan menulis isinya ke direktori tujuan. Sebelum memakai pola ini untuk file eksternal, validasi kontainer, jalur output, dan batas resource.
Ekstrak Isi ZIP ke Direktori
using Aspose.Zip;
using System.IO;
string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
archive.ExtractToDirectory(outputDirectory);
}
Ekstraksi Arsip yang Aman di Produksi
Perlakukan arsip dari pengguna atau sistem eksternal sebagai input tidak tepercaya. Ekstensi yang terlihat benar bukan bukti bahwa kontainer valid atau aman. Pastikan handler yang dipilih dapat membaca data, lalu tolak input yang rusak atau tidak didukung.
Sebelum menulis entri, resolve jalur output terhadap tujuan yang disetujui. Tolak jalur absolut, traversal ke direktori induk, dan hasil apa pun yang berada di luar direktori tersebut. Ini mencegah nama file di arsip mengarahkan penulisan ke lokasi lain pada sistem file.
Tetapkan batas untuk ukuran terkompresi, ukuran hasil ekstraksi total dan per entri, jumlah entri, kedalaman nesting, waktu eksekusi, dan concurrency. Gunakan folder sementara khusus job dengan izin terbatas, promosikan hanya output yang sudah divalidasi, dan bersihkan data setelah operasi berhasil maupun gagal.
Log sebaiknya berisi ID operasi dan status, bukan kata sandi, nama file privat, atau konten hasil ekstraksi. Jika output akan diparse, dipratinjau, atau dipindai, perlakukan setiap komponen berikutnya sebagai batas kepercayaan yang terpisah.
Coba Ekstraksi di Browser
Aplikasi ekstraksi online gratis memungkinkan Anda menguji input contoh tanpa menginstal software. Ini berguna untuk memeriksa output yang diharapkan sebelum workflow diterapkan di C#.
Tool online ditujukan untuk tugas interaktif. Library .NET ditujukan untuk layanan berulang, pemrosesan latar belakang, pipeline penyimpanan, dan aplikasi enterprise yang membutuhkan validasi serta penanganan output tetap berada di bawah kontrol aplikasi.
Panduan Ekstraksi untuk Setiap Jenis File
Detail implementasi berubah menurut kontainer dan format yang disimpan. Panduan spesifik format sebaiknya menjelaskan:
- class Aspose.ZIP yang benar untuk membuka arsip;
- contoh ekstraksi penuh dan selektif;
- perilaku kata sandi dan enkripsi;
- pemrosesan berbasis stream jika relevan;
- batasan format dan pertimbangan produksi;
- referensi API dan dokumentasi terkait.
Gunakan panduan untuk tipe input sebenarnya saat berpindah dari overview ini ke implementasi. Dengan begitu, asumsi khusus ZIP tidak diterapkan ke 7Z, RAR, TAR, CAB, atau format kompresi stream yang perilakunya berbeda.
Panduan Ekstraksi Arsip menurut Format File
Jelajahi halaman ekstraksi C# untuk file dan aset yang sering disimpan di dalam arsip ZIP.
</div>
</div>
Referensi Ekstraksi Arsip
- Jelajahi library arsip .NET
- Baca dokumentasi developer
- Lihat class dan metode
- Tinjau contoh C# di GitHub
- Instal paket dari NuGet
FAQ Ekstraksi Arsip
1. Bagaimana cara mengekstrak file arsip di C#?
Instal Aspose.ZIP, buka input dengan class yang sesuai dengan formatnya, lalu ekstrak seluruh kontainer atau entri tertentu ke direktori atau stream yang disetujui.
2. Bagaimana cara mengekstrak file dari arsip ZIP?
Buat instance Archive untuk input ZIP dan panggil ExtractToDirectory untuk membongkar semuanya. Telusuri Archive.Entries jika aplikasi perlu memeriksa atau menyimpan item tertentu saja.
3. Apakah ekstraksi arsip sama dengan membongkar ZIP?
Membongkar ZIP berlaku khusus untuk file ZIP. Ekstraksi adalah operasi yang lebih luas dan juga mencakup format seperti 7Z, RAR, TAR, CAB, CPIO, dan WIM.
4. Apakah aplikasi .NET dapat membuka arsip yang dilindungi kata sandi?
Aspose.ZIP mendukung akses berbasis kata sandi untuk format yang relevan ketika kredensial valid dan pengaturan dekripsi yang sesuai diberikan. Perilaku persisnya bergantung pada tipe kontainer.
5. Bagaimana cara mengekstrak arsip unggahan pengguna dengan aman?
Gunakan penyimpanan sementara terisolasi, validasi setiap jalur output, batasi format yang diterima, terapkan batas ukuran terkompresi dan hasil ekstraksi, tetapkan timeout pemrosesan, lalu hapus data sementara setelah operasi.