Pendant le processus de travail, un dossier doit être généré pour être compressé puis fourni à l'utilisateur pour télécharger. J'ai donc écrit une classe d'outils pour les fichiers compressés moi-même. Cette classe d'outils prend en charge la compression unique des fichiers et des dossiers. Mettez le code:
Importer java.io.BufferedOutputStream; Importer java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; import org.apache.tools.zip.zipentry; import org.apache.tools.zip.zipoutStream; / ** * @project: TEST * @author crense * @date; 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 Destination Compressée Fichier de fichiers Path de sauvegarde * @return void * @throws exception * / public void compresssfile (String ResourcesPath, String TargetPath) lève exception {file ResourcesFile = new File (ResourcesPath); // Fichier Source TargetFile = nouveau fichier (ciblePath); // but // Si le chemin de destination n'existe pas, créez un nouveau if (! TargetFile.exists ()) {TargetFile.mkDirs (); } String TargetName = ResourcesFile.getName () + ". Zip"; // Nom de fichier compressé Target FileOutputStream outputStream = new FileOutputStream (TargetPath + "//" + TargetName); ZipOutputStream out = new ZipOutputStream (new BufferedoutputStream (outputStream)); CreateCcompressedFile (Out, ResourcesFile, ""); out.close (); } / ** * @descs générer un fichier compressé. * S'il s'agit d'un dossier, utilisez la récursivité pour traverser et compresser le fichier * S'il s'agit d'un fichier, compressez directement * @param output stream * @param fichier file file * @return void * @throws exception * / public void createCreprimfile // obtient des informations de liste de fichiers fichiers [] files = file.listFiles (); // Ajouter un dossier au répertoire de packaging de niveau suivant out.putNextStry (new Zipentry (dir + "/")); dir = dir.length () == 0? "": dir + "/"; // boucle sur les fichiers de package dans le dossier pour (int i = 0; i <files.length; i ++) {createCompressedFile (out, files [i], dir + files [i] .getName ()); // Traitement récursif}} else {// Le courant est un fichier, Packaging Processing // File Input Stream FileInputStream fis = new FileInputStream (fichier); OUT.PUTNEXTENTRY (New Zipentry (Dir)); // Écrivez int j = 0; octet [] tampon = nouveau octet [1024]; while ((j = fis.read (tampon))> 0) {out.write (tampon, 0, j); } // Fermez le flux d'entrée fis.close (); }} public static void main (string [] args) {compresmpileFileutil compresssfileUtil = new comprestreFileUtil (); essayez {compresssFileutil.compresmpedFile ("g: // zip", "f: // zip"); System.out.println ("Le fichier compressé a été généré ..."); } catch (exception e) {System.out.println ("La génération de fichiers compressée a échoué ..."); e.printStackTrace (); }}}Les résultats de l'exécution du programme sont les suivants:
La structure du répertoire de fichiers avant compression:
Astuce: Si vous utilisez java.util.zip sous java.util pour l'emballage, il peut y avoir un problème de chinois brouillé. En effet, la méthode Java Zip ne prend pas en charge les changements dans le format d'encodage. Nous pouvons utiliser la classe d'outils Zip sous Ant.java pour l'emballage. Par conséquent, vous devez importer ant.jar dans le répertoire Lib du projet.
Résumer
Ce qui précède est l'exemple de code pour les fichiers compressés générés par Java qui vous sont présentés par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!