Rumah >Java >javaTutorial >Memampatkan dan membongkar fail di Java
dan DeflaterOutputStream
untuk pemampatan deflate. Kelas ini menawarkan cara yang cekap untuk mengendalikan data termampat. InflaterInputStream
Konsep teras:
Java menyediakan sokongan terbina dalam untuk memampatkan dan membongkar fail menggunakan pakej. java.util.zip
memampatkan data ke dalam format deflate (sering digunakan dalam arkib zip), manakala DeflaterOutputStream
mengurangkan data dalam format yang sama. InflaterInputStream
Contohnya: memampatkan fail ke zip
Contoh ini menunjukkan cara memampatkan fail ke dalam arkib zip:
Algoritmauntuk pemampatan fail/penyahmampatan:
<code class="language-java">try { File file = new File(filePath); String zipFileName = file.getName() + ".zip"; FileOutputStream fos = new FileOutputStream(zipFileName); ZipOutputStream zos = new ZipOutputStream(fos); zos.putNextEntry(new ZipEntry(file.getName())); byte[] bytes = Files.readAllBytes(Paths.get(filePath)); zos.write(bytes, 0, bytes.length); zos.closeEntry(); zos.close(); } catch (FileNotFoundException ex) { System.err.format("File not found: %s%n", filePath); } catch (IOException ex) { System.err.println("I/O error: " + ex); }</code>
Algoritma umum untuk pemampatan fail dan penyahmampatan di Java melibatkan langkah -langkah ini:
Inisialisasi:
FileOutputStream
, dan aliran tutup. DeflaterOutputStream
FileInputStream
DeflaterOutputStream
Decompression: FileInputStream
InflaterInputStream
FileOutputStream
Pengendalian ralat: try-catch
IOExceptions
Contoh sintaks yang dipermudahkan: Walaupun lengkap, contoh yang mantap memerlukan lebih banyak pengendalian ralat dan pengurusan jalur fail, coretan sintaks mudah menggambarkan operasi teras:
pemampatan:
penyahmampatan:
<code class="language-java">FileInputStream inputStream = new FileInputStream(inputPath); FileOutputStream outputStream = new FileOutputStream(outputPath); DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream); // ... write data from inputStream to compressor ... compressor.close();</code>
Pendekatan:
<code class="language-java">FileInputStream inputStream = new FileInputStream(inputPath); FileOutputStream outputStream = new FileOutputStream(outputPath); InflaterInputStream decompressor = new InflaterInputStream(inputStream); // ... write data from decompressor to outputStream ... decompressor.close();</code>
Dua pendekatan utama wujud: memampatkan/menyegarkan fail tunggal dan mengendalikan pelbagai fail atau direktori. Contoh-contoh yang disediakan sebelum ini dalam teks asal menunjukkan mampatan fail tunggal menggunakan dan contoh yang lebih kompleks untuk pelbagai fail. Pengendalian direktori memerlukan pemprosesan rekursif untuk melintasi struktur direktori. Ambil perhatian bahawa contoh kod asal tidak mempunyai pengendalian laluan fail yang betul dan pengurusan ralat, yang membawa kepada . Sentiasa pastikan pengendalian ralat yang mantap dan tentukan laluan fail yang betul dalam kod anda.
ZipOutputStream
Kesimpulan: FileNotFoundException
Java menawarkan alat yang berkuasa untuk pemampatan fail dan penyahmampatan. Memahami DeflaterOutputStream
dan InflaterInputStream
bersama -sama dengan pengendalian ralat yang betul dan pengurusan laluan fail adalah penting untuk mewujudkan utiliti mampatan yang boleh dipercayai dan cekap. Ingatlah untuk sentiasa mengendalikan pengecualian yang berpotensi dan memberikan mesej ralat yang sesuai kepada pengguna.
Atas ialah kandungan terperinci Memampatkan dan membongkar fail di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!