我正在使用GZIPOutputStream将一个xml文件gzip到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;
}
解决方法:
不知道这里有什么问题,你正在调用自己的压缩功能
private static boolean compress(String inputFileName, String targetFileName)
使用以下参数
compress("D://test.xml", "D://test.gz");
很明显,你将失去文件名的.xml部分,你永远不会将它传递给你的方法.
标签:java,gzip
来源: https://codeday.me/bug/20190716/1482141.html