我想将jar文件中的所有文件复制到当前目录之外。
这是我的代码。它在jar中写入所有文件名,所以..但是我想把jar里面的所有文件复制到jar外面。
import java.io.*;
import java.util.Enumeration;
import java.util.jar.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class JarRead
{
public static void main (String args[]) throws IOException
{
ZipFile file = new ZipFile("jarfile.jar");
if (file != null) {
Enumeration<? extends ZipEntry> entries = file.entries();
if (entries != null) {
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
System.out.println(entry);
}
}
}
}
}
答案 0 :(得分:0)
您不需要编写Java程序来执行此操作。您可以使用shell脚本。您可以只unzip
jar文件,然后find
目录中的文件,mv
将它们放入您拥有的目录中。
答案 1 :(得分:0)
这是一个执行此操作的类。您可能需要对其进行一些修改。
public class HtDocsExtractor {
private final String htDocsPath;
public HtDocsExtractor(String htDocsPath) {
this.htDocsPath = htDocsPath;
}
public void extract() throws Exception {
InputStream is = HtDocsExtractor.class.getResourceAsStream("/htdocs.zip");
ZipInputStream zis = new ZipInputStream(is);
try {
byte[] buf = new byte[8192];
ZipEntry zipentry;
zipentry = zis.getNextEntry();
while (zipentry != null) {
String entryName = htDocsPath + zipentry.getName();
entryName = entryName.replace('/', File.separatorChar);
entryName = entryName.replace('\\', File.separatorChar);
int n;
File newFile = new File(entryName);
if (zipentry.isDirectory()) {
if (!newFile.exists() && !newFile.mkdirs()) {
throw new Exception("Could not create directory: " + newFile);
}
zipentry = zis.getNextEntry();
}
else {
FileOutputStream fos = new FileOutputStream(entryName);
try {
while ((n = zis.read(buf)) > 0) {
fos.write(buf, 0, n);
}
} finally {
fos.close();
}
zis.closeEntry();
zipentry = zis.getNextEntry();
}
}
} finally {
zis.close();
}
}
}