Durante el proceso de trabajo, se debe generar una carpeta para comprimirse y luego proporcionar al usuario para su descarga. Así que escribí una clase de herramientas para archivos comprimidos yo mismo. Esta clase de herramientas admite compresión de un solo archivo y carpeta. Pon el código:
import 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.zipoutputstream;/** * @project: test * @author chensssys. 2013-7-7-28* @Description: Clase de herramienta de compresión de archivo* comprimir el archivo/carpeta especificado en archivos comprimidos de zip y rar*/public class compressedFileUtil {/*** Constructor predeterminado*/public compressedFileUtil () {}/*** @Desch Genere el archivo de origen/carpinero de origen en el formato especificado a los archivos compresados, format @ @de format @ @de la formación de recursos. Archivo/ carpeta * @param TargetPath Destino Completed Archivo Comprimido Ruta * @return void * @throws excepción */ public void compressedFile (String ResourcesSpath, String TargetPath) lanza la excepción {archivo recursos = nuevo archivo (recursos); // Archivo de origen Archivo TargetFile = nuevo archivo (TargetPath); // Propósito // Si la ruta de destino no existe, cree un nuevo if (! TargetFile.Exists ()) {TargetFile.MkDirs (); } String TargetName = ResourcesFile.getName ()+". Zip"; // Nombre de archivo comprimido de destino FileOutputStream OutputStream = new FileOutputStream (TargetPath+"//"+TargetName); ZipOutputStream out = new ZipOutputStream (new BufferedOutputStream (outputStream)); createCompisEdFile (fuera, recursosfile, ""); out.close (); } /*** @Desc Genere un archivo comprimido. * Si es una carpeta, entonces use la recursión para recorrer y comprimir el archivo * Si es un archivo, directamente comprimir * @param out sale de salida * @param archivo de destino de archivo * @return void * @throws excepción */public void createCompisEdFile (zipOutStStReam out, archivo, cadena dir) Excepción {// if if ifting es un plegador, procesamiento adicional if (procesamiento posterior es un procesamiento más realizado (es un procesamiento más realizado (es un procesamiento (es un procesamiento más realizado ((es un procesamiento (es un procesamiento (es un procesamiento (es un procesamiento (es un procesamiento más alto (es un procesamiento (es un procesamiento (es un procesamiento (es un procesamiento (es un procesamiento más alto (es un archivo (archivo) (archivo). // Obtener archivo de información de la lista de archivos [] files = file.listfiles (); // Agregar carpeta al siguiente directorio de empaque de nivel. dir = dir.length () == 0? "": dir +"/"; // bucle para empaquetar archivos en la carpeta para (int i = 0; i <files.length; i ++) {createCOMPressedFile (out, archivos [i], dir+archivos [i] .getName ()); // Procesamiento recursivo}} else {// La actual es un archivo, procesamiento de empaque // archivo de entrada stream fileInputStream fis = new FileInputStream (archivo); out.putNextEntry (New ZipEntry (Dir)); // escribir int j = 0; byte [] buffer = new Byte [1024]; while ((j = fis.read (buffer))> 0) {out.write (buffer, 0, j); } // Cerrar la transmisión de la transmisión Fis.Close (); }} public static void main (string [] args) {compressedFileUtil CompressedFileUtil = new CompressedFileUtil (); Pruebe {CompressedFileUtil.ComprisEdFile ("g: // zip", "f: // zip"); System.out.println ("Se ha generado el archivo comprimido ..."); } catch (Exception e) {System.out.println ("Falló de generación de archivos comprimidos ..."); E.PrintStackTrace (); }}}Los resultados de ejecutar el programa son los siguientes:
La estructura del directorio de archivos antes de la compresión:
Consejo: Si usa java.util.zip bajo java.util para empaquetar, puede haber un problema de chino confusión. Esto se debe a que el método Java Zip no admite cambios en el formato de codificación. Podemos usar la clase de herramienta ZIP en Ant.Java para empaquetar. Por lo tanto, debe importar Ant.Jar al directorio LIB del proyecto.
Resumir
El anterior es el código de ejemplo para archivos comprimidos generados por Java presentados por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!