如何解决java中zip / unzip动作期间文件/文件夹名称中出现的字符破坏?

时间:2017-01-04 10:22:01

标签: java windows encoding character-encoding unzip

我正在使用以下代码段来解压缩文件。

public void zipFiles(String zipFile){

     byte[] buffer = new byte[1024];
     String charset = "UTF-8";

     try{

        FileOutputStream fos = new FileOutputStream(zipFile);
        ZipOutputStream zos = new ZipOutputStream(fos);
        zos.setEncoding(charset);

        System.out.println("Output to Zip : " + zipFile);

        for(String file : this.fileList){

            System.out.println("File Added : " + file);
            ZipEntry ze= new ZipEntry(file);
            zos.putNextEntry(ze);

            FileInputStream in =
                       new FileInputStream(SOURCE_FOLDER + File.separator + file);

            int len;
            while ((len = in.read(buffer)) > 0) {
                zos.write(buffer, 0, len);
            }

            in.close();
        }

        zos.closeEntry();
        //remember close it
        zos.close();

        System.out.println("Done");
    }catch(IOException ex){
       ex.printStackTrace();
    }
   }

当我的文件/文件夹名称是英文时,这可以正常工作。但对于其他人来说,俄罗斯人物在这期间不受支持。即;解压缩时文件名或文件夹名称有破损。

这适用于mac os但在Windows和Linux中没有预期的那样。非常感谢任何帮助。

0 个答案:

没有答案