我有两个文件夹存储在我的Javafx应用程序的jar中,我不想将此应用程序作为可执行jar文件分发给客户,所以我使用{{1}将其更改为Application (.exe)
文件}}。
当用户激活Launch4J
时,我的应用程序会尝试将这两个文件夹从Application (.exe)
复制到某个目录,此刻我似乎无法引用这两个文件夹Application (.exe)
内的文件夹。
有没有人知道如何在java中执行此操作?
答案 0 :(得分:0)
这是我用来完成这项工作的代码,如果有人需要的话,我会在这个页面上找到它。 How to write a Java program which can extract a JAR file and store its data in specified directory (location)?,
String temp = System.getProperty("user.dir") + "\\unzipTester.exe";
String destDir = "C:\\Users\\chris\\Desktop\\New folder (2)";
java.util.jar.JarFile jar = null;
try{
jar = new java.util.jar.JarFile(temp);
}
catch(Exception ex){
JOptionPane.showMessageDialog(null,ex.getMessage());
}
//JOptionPane.showMessageDialog(null,jar.getName());
java.util.Enumeration enumEntries = jar.entries();
while (enumEntries.hasMoreElements()) {
java.util.jar.JarEntry file = (java.util.jar.JarEntry) enumEntries.nextElement();
if(file.toString().contains("unziptester") || file.toString().contains("MANIFEST.MF")
|| file.toString().contains("META-INF")){
continue;
}
System.out.println(file.toString());
java.io.File f = new java.io.File(destDir + java.io.File.separator + file.getName());
if (file.isDirectory() && !file.toString().contains("unziptester") && !file.toString().contains("META-INF")) { // if its a directory, create it
f.mkdir();
continue;
}
java.io.InputStream is = jar.getInputStream(file); // get the input stream
java.io.FileOutputStream fos = new java.io.FileOutputStream(f);
while (is.available() > 0) { // write contents of 'is' to 'fos'
fos.write(is.read());
}
fos.close();
is.close();
}