如何复制某个jar或zip文件中的一个目录? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为其他原因,不能解压。能否直接在zip包里提取目录? 当你去读取一个ZIP文件的时,对里面的entry一个一个的解析,如果是你要读的目录,则将这个entry写到你要复制的目录中去 关键是我从classpath中查找一目录,然后再把此目录下的文件一个个的复制。而此目录可能存在jar中,也可能是一般的目录。这种情况如何区分? 昨天刚把java解压zip文件整理了一下下,用到ant.jar组件: /** * 解压zip文件,注意不能解压rar文件哦,只能解压zip文件 解压rar文件 会出现java.io.IOException: Negative * seek offset异常 create date:2009-6-8 author:Administrator * * @param zipfile * zip文件,注意要是正宗的zip文件哦,不能是把rar的直接改为zip这样会出现java.io.IOException: * Negative seek offset异常 create date:2009-6-10 * author:Administrator * * @param zipfile * @param destDir */ public static void unZip(String zipfile, String destDir) { destDir = destDir.endsWith("\\") ? destDir : destDir + "\\"; byte b[] = new byte[1024]; int length; ZipFile zipFile; try { zipFile = new ZipFile(new File(zipfile)); Enumeration enumeration = zipFile.getEntries(); ZipEntry zipEntry = null; while (enumeration.hasMoreElements()) { zipEntry = (ZipEntry) enumeration.nextElement(); File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) { // 这段都可以不要,因为每次都貌似从最底层开始遍历的 loadFile.mkdirs(); } else { if (!loadFile.getParentFile().exists()) loadFile.getParentFile().mkdirs(); OutputStream outputStream = new FileOutputStream(loadFile); InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) > 0) outputStream.write(b, 0, length); } } System.out.println("文件解压成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 推荐你用truezip他可以:1.在不解压的情况下更改zip文件中的某个文件。2.在不解压的情况下复制某个文件到指定目录3.解压某个文件和压缩某个目录。还有很多功能,你下载一下,参照着文档中的例子写写就可以了。告诉了你方法,代码自己写就可以了吧。呵呵 如何将字符串放进字节数组里? 请教高手怎么遍历 HashSet,在线等 我遇到个JAVA桌面程序窗口问题 谁来帮帮我 请教如何实现托盘下用screen键抓图的功能,多谢了! JAVA可以实现这个功能吗? JAVA串口通信问题,急 Java中这样的函数是什么呀 出200分(或更多),就non-static inner class请教java高手 Overloading的几个同名方法的声明部分可以抛出完全不同的异常列表吗,还可以有的抛出异常,有的不抛出吗? java 中的yield()方法为什么有时候不会让出cpu? 关于对象创建时的一些小问题 java编译器研究大探讨
* 解压zip文件,注意不能解压rar文件哦,只能解压zip文件 解压rar文件 会出现java.io.IOException: Negative
* seek offset异常 create date:2009-6-8 author:Administrator
*
* @param zipfile
* zip文件,注意要是正宗的zip文件哦,不能是把rar的直接改为zip这样会出现java.io.IOException:
* Negative seek offset异常 create date:2009-6-10
* author:Administrator
*
* @param zipfile
* @param destDir
*/
public static void unZip(String zipfile, String destDir) { destDir = destDir.endsWith("\\") ? destDir : destDir + "\\";
byte b[] = new byte[1024];
int length; ZipFile zipFile;
try {
zipFile = new ZipFile(new File(zipfile));
Enumeration enumeration = zipFile.getEntries();
ZipEntry zipEntry = null; while (enumeration.hasMoreElements()) {
zipEntry = (ZipEntry) enumeration.nextElement();
File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) {
// 这段都可以不要,因为每次都貌似从最底层开始遍历的
loadFile.mkdirs();
} else {
if (!loadFile.getParentFile().exists())
loadFile.getParentFile().mkdirs(); OutputStream outputStream = new FileOutputStream(loadFile);
InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) > 0)
outputStream.write(b, 0, length); }
}
System.out.println("文件解压成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }