Archivo comprimido: intercambio de código de productos secos

1. Antecedentes

        Recientemente, la interfaz de escritura se encontró con la necesidad de enviar archivos a través del servidor FTP. El contenido del archivo debe cifrarse y comprimirse, así que regístrelo y proporcione el código que ha pasado la prueba.

2. Código

        

package com.example.demo.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.util.zip.GZIPOutputStream;

@Slf4j
public class GZipUtils {
    /**
    * compress the file
    * @param inBoundFilePath the file need to compress
    * @return the uncompressed file's absolute path
    * */
    public static String doCompressFile(String inBoundFilePath) {
        String newFileName;
        File zipFile;
        /*auto-closeable*/
        try(FileInputStream inputStream = new FileInputStream(inBoundFilePath);
        GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream(inBoundFilePath + ".gz"))){
            log.debug("... opening ...filepath{} ",inBoundFilePath);
            log.debug("... compressing ...");
            byte[] bytes = new byte[1024];
            int readLength ;
            int fileLength = 0;
            while(( readLength = inputStream.read(bytes)) > 0) {
                gzipOutputStream.write(bytes,0,fileLength);
                fileLength+=readLength;
            }
            gzipOutputStream.finish();
            gzipOutputStream.flush();
            log.debug("compress task finish");
            log.debug("original file size {}",fileLength);
            zipFile = new File(inBoundFilePath + ".gz");
            log.debug("compressed file size {}",zipFile.length());
        } catch (FileNotFoundException e) {
            log.error("filename:{} doesn't exists",inBoundFilePath);
            log.error(e.getMessage());
            return null;
        } catch (IOException e) {
            log.error(e.getMessage());
            return null;
        }

        /*reName the filename with file size suffix .It's required by the requirements doc */
        String fileLength = String.format("%08d",Integer.parseInt(String.valueOf(zipFile.length())));
        newFileName = inBoundFilePath + fileLength;
        if (reName(inBoundFilePath + ".gz",newFileName)){
            return newFileName;
        } else {
            log.error("error renaming");
            return null;
        }
    }
    /**
     * rename the file
     * @param absolutePathName the filename with absolute path prefix
     * @param newFilename renamed filename
     * @return boolean
     * */
    private static boolean reName(String absolutePathName,String newFilename) {
        File file = new File(absolutePathName);
        if (file.exists()) {
            return file.renameTo(new File(newFilename));
        }
        log.error("file doesn't exists ");
        return false ;
    }
}

prueba, un documento

tamaño

clase de prueba

 Los resultados de la prueba se muestran en la consola.

Comprobar el tamaño real del archivo comprimido

 Después de abrir el software de descompresión

Supongo que te gusta

Origin blog.csdn.net/Lee_92/article/details/131472090
Recomendado
Clasificación