关于解压缩乱码问题,请高手指点。 编码eclipsejava解压缩utf8 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 附上我的测试代码(ant下的)package zTest;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.Enumeration;import org.apache.tools.ant.Project;import org.apache.tools.ant.taskdefs.Expand;import org.apache.tools.ant.taskdefs.Zip;import org.apache.tools.ant.types.FileSet;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;public class ZipUtil { private static final Project DEFAULT_PROJECT = new Project(); public static void zip(File orgin, File dest) { Zip zip = new Zip(); zip.setProject(DEFAULT_PROJECT); zip.setDestFile(dest); FileSet fs = new FileSet(); fs.setProject(DEFAULT_PROJECT); fs.setDir(orgin); zip.addFileset(fs); zip.execute(); } public static boolean unZip(String zipFileName, String outputDirectory) { boolean flag = false; try { ZipFile zipFile = new ZipFile(zipFileName); Enumeration e = zipFile.getEntries(); ZipEntry zipEntry = null; createDirectory(outputDirectory, ""); while (e.hasMoreElements()) { zipEntry = (ZipEntry) e.nextElement(); if (zipEntry.isDirectory()) { String name = zipEntry.getName(); name = name.substring(0, name.length() - 1); File f = new File(outputDirectory + File.separator + name); f.mkdir(); } else { String fileName = zipEntry.getName(); fileName = fileName.replace('\\', '/'); if (fileName.indexOf("/") != -1) { createDirectory(outputDirectory, fileName.substring(0, fileName.lastIndexOf("/"))); fileName = fileName.substring( fileName.lastIndexOf("/") + 1, fileName.length()); } File f = new File(outputDirectory + File.separator + zipEntry.getName()); f.createNewFile(); InputStream in = zipFile.getInputStream(zipEntry); FileOutputStream out = new FileOutputStream(f); byte[] by = new byte[1024]; int c; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } out.close(); in.close(); } flag = true; } } catch (Exception ex) { ex.printStackTrace(); } return flag; } private static void createDirectory(String directory, String subDirectory) { String dir[]; File fl = new File(directory); try { if (subDirectory == "" && fl.exists() != true) fl.mkdir(); else if (subDirectory != "") { dir = subDirectory.replace('\\', '/').split("/"); for (int i = 0; i < dir.length; i++) { File subFile = new File(directory + File.separator + dir[i]); if (subFile.exists() == false) subFile.mkdir(); directory += File.separator + dir[i]; } } } catch (Exception ex) { System.out.println(ex.getMessage()); } } public static void main(String[] args) { unZip("E:\\好的\\测试报告.zip", "E:\\好的\\"); }} 这个用gbk解码,在读取后把流变成utf-8的String,然后在变成utf-8字节写入utf-8文件,不行吗? 你换成 appche 里面的 ZIP 类 问题完美解决 cmd中带包编译子类java 怎么输入命令符 java 与 数据库问题 怎么样用java对集合内的对象排序 【求教网络通信高手】如何截获非本机MAC地址的数据包 问一个java小程序 求助一个j2sdk-1_4_2的下载地址,SUN的太慢了,在线等 求myeclipse开发Hibernate的动画?前两看我下过,现在找不到了。 一个命令行传递参数出现的问题,希望高人指教 ? 请问什么是“银弹”? 为什么退出Jbuilder7以后会出现任务栏死了的现象? Java中可以不可以使用jqGrid这个控件 Swing如何通过同一个按钮向任意不同文本框输入值?
package zTest;import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;public class ZipUtil { private static final Project DEFAULT_PROJECT = new Project(); public static void zip(File orgin, File dest) {
Zip zip = new Zip();
zip.setProject(DEFAULT_PROJECT);
zip.setDestFile(dest); FileSet fs = new FileSet();
fs.setProject(DEFAULT_PROJECT);
fs.setDir(orgin);
zip.addFileset(fs);
zip.execute(); } public static boolean unZip(String zipFileName, String outputDirectory) {
boolean flag = false;
try {
ZipFile zipFile = new ZipFile(zipFileName);
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1) {
createDirectory(outputDirectory, fileName.substring(0,
fileName.lastIndexOf("/")));
fileName = fileName.substring(
fileName.lastIndexOf("/") + 1,
fileName.length());
}
File f = new File(outputDirectory + File.separator
+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
flag = true;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
} private static void createDirectory(String directory, String subDirectory) {
String dir[];
File fl = new File(directory);
try {
if (subDirectory == "" && fl.exists() != true)
fl.mkdir();
else if (subDirectory != "") {
dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i < dir.length; i++) {
File subFile = new File(directory + File.separator + dir[i]);
if (subFile.exists() == false)
subFile.mkdir();
directory += File.separator + dir[i];
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
} public static void main(String[] args) {
unZip("E:\\好的\\测试报告.zip", "E:\\好的\\");
}
}