Selama proses kerja, folder perlu dihasilkan untuk dikompresi dan kemudian diberikan kepada pengguna untuk diunduh. Jadi saya menulis kelas alat untuk file terkompresi sendiri. Kelas alat ini mendukung satu file dan kompresi folder. Letakkan kode:
Impor java.io.bufferedoutputStream; import java.io.file; import java.io.fileInputStream; import java.io.fileoutputstream; import org.apache.tools.zip.zipentry; import org.apache.tools.zip.apapoutsputStreamp;/ * 2013-7-28 * @Description: File compression tool class* Compress the specified file/folder into zip and rar compressed files*/public class CompressedFileUtil { /** * Default constructor */ public CompressedFileUtil(){ } /** * @desc Generate the source file/folder in the specified format to compressed files, format zip * @param resourcePath Source file/folder * @param TargetPath Tujuan Terkompresi Path Saving File * @Return void * @throws Exception */ public void compressedFile (String Resourcespath, String TargetPath) melempar Exception {File ResourcesFile = File baru (Resourcespath); // file sumber targetFile = file baru (TargetPath); // Tujuan // Jika jalur tujuan tidak ada, buat IF baru (! TargetFile.exists ()) {targetFile.mkdirs (); } String targetName = ResourcesFile.getName ()+". Zip"; // target nama file terkompresi fileOutputStream outputStream = new fileoutputStream (targetPath+"//"+targetName); ZipoutputStream out = zipoutputStream baru (baru bufferedoutputStream (outputStream)); CreateCompressedFile (Out, Resourcesfile, ""); out.close (); } /*** @desc menghasilkan file terkompresi. * Jika itu adalah folder, maka gunakan rekursi untuk melintasi dan mengompres file * jika itu adalah file, langsung kompres * @param out output stream * @param file target file * @return void * @throws Exception */public void createCompressedFile (zipoutputStream out, file file, string dir) lemparan pengecualian {/jika proses yang lebih lanjut (zipoutputStream, a. if (file.isDirectory ()) {// Dapatkan file informasi daftar file [] file = file.listFiles (); // Tambahkan folder ke direktori kemasan level berikutnya out.putNextEntry (zipentry baru (dir+"/")); dir = dir.length () == 0? "": dir +"/"; // loop ke paket file di folder untuk (int i = 0; i <file.length; i ++) {createCompressedFile (out, file [i], file dir+[i] .getName ()); // pemrosesan rekursif}} else {// arus adalah file, pemrosesan pengemasan // file input aliran fileInputStream fis = new fileInputStream (file); out.putNextEntry (new zipentry (dir)); // tulis int j = 0; byte [] buffer = byte baru [1024]; while ((j = fis.read (buffer))> 0) {out.write (buffer, 0, j); } // tutup aliran input fis.close (); }} public static void main (string [] args) {compressedfileutil compressedfileutil = new compressedfileutil (); coba {compressedfileutil.CompressedFile ("g: // zip", "f: // zip"); System.out.println ("File terkompresi telah dihasilkan ..."); } catch (Exception e) {System.out.println ("Pembuatan file terkompresi gagal ..."); e.printstacktrace (); }}}Hasil menjalankan program adalah sebagai berikut:
Struktur Direktori File Sebelum Kompresi:
Kiat: Jika Anda menggunakan java.util.zip di bawah java.util untuk kemasan, mungkin ada masalah Cina yang kacau. Ini karena metode ZIP Java tidak mendukung perubahan dalam format pengkodean. Kita dapat menggunakan kelas alat zip di bawah Ant.java untuk kemasan. Karena itu, Anda perlu mengimpor Ant.jar ke direktori LIB proyek.
Meringkaskan
Di atas adalah contoh kode untuk file terkompresi yang dihasilkan Java yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!