ZipOutputStream压缩包内中文文件名乱码

分析问题:

       原先使用的是java.util.ZipOutputStream,而在这个类中,没有设置编码的方法;因此每次遇到中文的时候,都会变成乱码;

解决方案:

       采用org.apache.tools.zip.ZipOutputStream类中的setEncoding()方法;需引入ant-1.7.1.jar
jar包下载:https://download.csdn.net/download/su1573/12106896

代码示例:

//压缩包的绝对路径,文件的绝对路径,压缩后的一级文件夹的名字
    public boolean zipFiles()
    {
    
    
         ZipOutputStream tZipOutputStream=null;
         try
         {
    
    
             tZipOutputStream = new ZipOutputStream(new FileOutputStream(OutName));
             //注意此处编码设置  支持中文  
             tZipOutputStream.setEncoding("GBK");
             BaseName = BaseName.length() == 0 ? "" : BaseName + "/";
             for(int i=0;i<FileName.length;i++)
             {
    
    
                 File in = null;
                 if("contract".equals(Operator[i])){
    
    
                     zip(tZipOutputStream,FileName[i],BaseName+FileOldName[i]);
                 }else{
    
    
                     in=new File(FileName[i]);
                     zip(tZipOutputStream,in,BaseName+FileOldName[i]);
                 }
             }
             tZipOutputStream.close();
         }
         catch(Exception ex)
         {
    
    
             log.debug(ex.toString());
             try
             {
    
    
                 tZipOutputStream.close();
             }
             catch(Exception e)
             {
    
    
                 log.debug(e.toString());
             }
             return false;
         }
         return true;
    }

猜你喜欢

转载自blog.csdn.net/su1573/article/details/90288269