java生成压缩文件 ZipEntry出现乱码的问题

      在项目中,一次导出的文件有好几个,而且文件内容比较大,最后考虑到把文件进行压缩在下载,开始试用JDK自带的ZIP压缩包时,ZipEntry ze = new ZipEntry(fileName);//这是压缩包名里的文件名  如果filename是中中文时,文件名就会出现乱码,最后换成apache的zip就没有这个问题了,相关的类都在ant包里,import更新如下: 


// import java.util.zip.ZipEntry;  
// import java.util.zip.ZipOutputStream;  

import org.apache.tools.zip.ZipEntry;  
import org.apache.tools.zip.ZipOutputStream; 

 

 

具体压缩方法如下,文件路径等内容由于是测试直接写死在代码中

 

 

/**
	 * 生成压缩文件
	 * @param tBaseReportForm
	 */
	public void createZip(TBaseReportForm tBaseReportForm) throws Exception{
		FileOutputStream fos = new FileOutputStream("d:/性能分析数据报表.zip");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        ZipOutputStream zos = new ZipOutputStream(bos);//压缩包
        for(String fileName : tBaseReportForm.getPrintFileName()){
        	 File f = new File("d:/" + fileName);
             FileInputStream fis = new FileInputStream(f);
             BufferedInputStream bis = new BufferedInputStream(fis);
             byte[] buf = new byte[1024];
             int len;
             
             ZipEntry ze = new ZipEntry(fileName);//这是压缩包名里的文件名
             zos.putNextEntry(ze);//写入新的 ZIP 文件条目并将流定位到条目数据的开始处

             while((len=bis.read(buf))!=-1)
             {
                zos.write(buf,0,len);
                zos.flush();
             }
             fis.close();
             bis.close();
        }       
        zos.close();
	}

你可能感兴趣的:(java)