java压缩文件中文名乱码问题
Posted likaixin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java压缩文件中文名乱码问题相关的知识,希望对你有一定的参考价值。
import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; 改为 import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream;
ant包里提供ZipOutputStream类的setEncoding("gbk")方法。
zos.setEncoding("gbk");
ant包下载(点击进入页面,另开一个新页面)
下载地址如下:
https://mvnrepository.com/artifact/org.apache.ant/ant/1.7.1 (点击进入页面,本页面被覆盖)
package file; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; public class Zip public static void main(String[] args) //文件所在路径 String path = "E:\\test"; File dir = new File(path); if(!dir.isDirectory()) System.out.println(path + "--路径不存在!"); //所有文件 File[] files = new File(path).listFiles(); if(files == null || files.length < 1) System.out.println(path + "--路径下无文件!"); //压缩文件名 String zipname = "hello.zip"; File zipFile = new File(path + File.separator + zipname); if(zipFiles(files, zipFile) == 0) System.out.println("压缩文件ok!"); public static int zipFiles(File[] files, File zipFile) if (zipFile.exists()) System.out.println(zipFile + "--压缩文件已存在!"); return -1; BufferedInputStream bis = null; ZipOutputStream zos = null; try zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile))); byte[] bufs = new byte[1024*10]; for(int i=0;i<files.length;i++) //创建ZIP实体,并添加进压缩包 ZipEntry zipEntry = new ZipEntry(files[i].getName()); zos.putNextEntry(zipEntry); //乱码问题 zos.setEncoding("gbk"); bis = new BufferedInputStream(new FileInputStream(files[i]), 1024*10); int read = 0; while((read=bis.read(bufs, 0, 1024*10)) != -1) zos.write(bufs,0,read); return 0; catch (IOException e) e.printStackTrace(); System.out.println("压缩文件过程BUG了!"); return -1; finally try if (zos != null) zos.close(); catch (Exception e) e.printStackTrace(); try if (bis != null) bis.close(); catch (Exception e) e.printStackTrace();
以上是关于java压缩文件中文名乱码问题的主要内容,如果未能解决你的问题,请参考以下文章
请问用java编写一个压缩程序,怎样解决压缩文件zip里的文件名乱码问题!
用java压缩文件,中文文件名成了乱码。 问题应该是出在流里了。 要怎么解决呢?
请大神帮忙解决一个用java解压缩一个zip压缩格式字节流中文内容乱码问题!