java怎么用Gzip实现文件的压缩和解压缩的? 15
这个并不是调用java中自带的Gzip文件流来实现,而是自己写出这个压缩过程,哪个大神能教教我啊,好的话,会给加分的...
这个并不是调用java中自带的Gzip文件流来实现,而是自己写出这个压缩过程,哪个大神能教教我啊,好的话,会给加分的
展开
2个回答
展开全部
网上搜,很多的。
追问
大哥,我要是搜索到了就不会在这用15分来晃悠了,真的。。。。
追答
字数有限制,不能发完整代码了,发关键代码吧,使用org.apache.tools.zip包
/**
* 解压文件
*
* @param zipFileName 压缩文件名
* @param outputDirectory 解压的位置
* @throws Exception
*/
public static void unZip(String zipFileName, String outputDirectory)
throws Exception {
try {
ZipFile zipFile = new ZipFile(zipFileName);
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (org.apache.tools.zip.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();
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询