java gzip无法保留原始文件的扩展名

Eri*_*ang 6 java gzip

我正在使用 GZIPOutputStream 将一个 xml 文件压缩为 gz 文件,但压缩后我发现 gz 文件层次结构中缺少 xml 文件 (.xml) 的扩展名。我需要保留扩展名,因为压缩的 gz 文件将由第三方系统使用,该系统期望在解压缩 gz 文件后获得 .xml 文件。有什么解决办法吗?我的测试代码是:

public static void main(String[] args) {
    compress("D://test.xml", "D://test.gz");
}

private static boolean compress(String inputFileName, String targetFileName){
     boolean compressResult=true;
     int BUFFER = 1024*4;
     byte[] B_ARRAY = new byte[BUFFER]; 
     FileInputStream fins=null;
     FileOutputStream fout=null;
     GZIPOutputStream zout=null;
     try{
         File srcFile=new File(inputFileName);
         fins=new FileInputStream (srcFile);
         File tatgetFile=new File(targetFileName);
         fout = new FileOutputStream(tatgetFile);
         zout = new GZIPOutputStream(fout);
         int number = 0; 
         while((number = fins.read(B_ARRAY, 0, BUFFER)) != -1){
             zout.write(B_ARRAY, 0, number);  
         }
     }catch(Exception e){
         e.printStackTrace();
         compressResult=false;
     }finally{
         try {
            zout.close();
            fout.close();
            fins.close();
        } catch (IOException e) {
            e.printStackTrace();
            compressResult=false;
        }
     }
     return compressResult;
}
Run Code Online (Sandbox Code Playgroud)

JW8*_*JW8 6

也许我遗漏了一些东西,但是当我过去对文件进行 gzip 压缩时,比如说test.xml,我得到的输出将是test.xml.gz. 也许如果您将输出文件名更改为,test.xml.tz您仍然会保留原始文件扩展名。