Apakah tetap ada di .Net (C #) untuk mengekstrak data dari file zip tanpa mendekompresi file lengkap?
Sederhananya saya mungkin ingin mengekstrak data (file) dari awal file zip, jelas ini tergantung jika algoritma kompresi memampatkan file dalam urutan deterministik.
c#
compression
zip
data-compression
AwkwardCoder
sumber
sumber
Jawaban:
DotNetZip adalah teman Anda di sini.
Semudah:
(Anda juga dapat mengekstrak ke file atau tujuan lain).
Membaca daftar isi file zip semudah:
Diedit Untuk Catatan: DotNetZip dulu tinggal di Codeplex. Codeplex telah dimatikan. Arsip lama masih tersedia di Codeplex . Sepertinya kode telah bermigrasi ke Github:
sumber
Dengan .Net Framework 4.5 (menggunakan ZipArchive ):
Temukan "myfile" di zipfile dan ekstrak.
sumber
System.IO.Compression.dll
danSystem.IO.Compression.FileSystem.dll
Sesuatu seperti ini akan mendaftar dan mengekstrak file satu per satu, jika Anda ingin menggunakan SharpZipLib:
Berdasarkan contoh ini: konten di dalam file zip
sumber
Berikut adalah bagaimana file teks UTF8 dapat dibaca dari arsip zip menjadi variabel string (.NET Framework 4.5 dan lebih tinggi):
sumber
File zip memiliki daftar isi. Setiap utilitas zip harus memiliki kemampuan untuk menanyakan TOC saja. Atau Anda dapat menggunakan program baris perintah seperti 7zip -t untuk mencetak daftar isi dan mengarahkannya ke file teks.
sumber
Jika demikian, Anda perlu mengurai entri header lokal zip. Setiap file, disimpan dalam file zip, memiliki entri Header File Lokal sebelumnya, yang (biasanya) berisi informasi yang cukup untuk dekompresi, Umumnya, Anda dapat membuat parsing sederhana dari entri tersebut dalam aliran, memilih file yang diperlukan, menyalin header + data file terkompresi ke file lain. file, dan panggil unzip pada bagian itu (jika Anda tidak ingin berurusan dengan seluruh kode atau pustaka dekompresi Zip).
sumber