一个小问题:
作zip压缩的时候发现压缩完成的文件打不开,经排查发现被压缩的文件,其文件名都变成了乱码(英文和数字没事,中文的不行)。自己分析可能是编码冲突:java内部统一编码为unicode但是winrar只能按照ASCII进行文件名解析。各位有办法解决吗??手头没书,俩眼一摸黑....
//代码如下
public boolean zipFile(File from, File to) {
try {
FileInputStream fin = new FileInputStream(from);
BufferedInputStream bin= new BufferedInputStream(fin);
FileOutputStream fout = new FileOutputStream(to);
ZipOutputStream out = new ZipOutputStream(fout);
byte buffer[] = new byte[1024 * 4];
int bytesread = 0;
String s = from.getPath();
s=s.substring(from.getParent().length(), s.length());
ZipEntry entry = new ZipEntry(s);
out.putNextEntry(entry);
while ((bytesread = bin.read(buffer))!=-1)
out.write(buffer, 0, bytesread);
out.close();
fin.close();
bin.close();
return true;
} catch (Exception e) {
return false;
}
}
作zip压缩的时候发现压缩完成的文件打不开,经排查发现被压缩的文件,其文件名都变成了乱码(英文和数字没事,中文的不行)。自己分析可能是编码冲突:java内部统一编码为unicode但是winrar只能按照ASCII进行文件名解析。各位有办法解决吗??手头没书,俩眼一摸黑....
//代码如下
public boolean zipFile(File from, File to) {
try {
FileInputStream fin = new FileInputStream(from);
BufferedInputStream bin= new BufferedInputStream(fin);
FileOutputStream fout = new FileOutputStream(to);
ZipOutputStream out = new ZipOutputStream(fout);
byte buffer[] = new byte[1024 * 4];
int bytesread = 0;
String s = from.getPath();
s=s.substring(from.getParent().length(), s.length());
ZipEntry entry = new ZipEntry(s);
out.putNextEntry(entry);
while ((bytesread = bin.read(buffer))!=-1)
out.write(buffer, 0, bytesread);
out.close();
fin.close();
bin.close();
return true;
} catch (Exception e) {
return false;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货