我正在尝试将文件从类路径复制到用户指定的位置。但是,在netbeans中运行程序时,文件路径正常工作并且文件被复制但是当我构建一个jar文件并尝试相同时,它不会找到源文件。
URL url = getClass().getResource("utils/mount");
File file = new File(url.getPath());
this.copyEachFile(url.getPath(), "C:\\Users\\Nikhil\\Desktop\\" + mount); //this function takes in source path of file and copies it to destination path.
当我跟踪源路径时,我得到了
/C:/Users/Nikhil/Documents/NetBeansProjects/Aroma-Installer/build/classes/aroma/installer/utils/mount
在netbeans中,然后在jar中
/C:/Users/Nikhil/Documents/NetBeansProjects/Aroma-Installer/dist/Aroma-Installer.jar!/aroma/installer/utils/mount
当我在netbeans中运行程序时,文件成功复制但在运行jar时,它表示源不存在。 问题在哪里?
答案 0 :(得分:0)
好的,我创建了一个函数,并按如下方式调用它。
this.copyFileFromJar("utils/mount", "C:\\Users\\Nikhil\\Desktop\\mount");
功能定义如下。
public void copyFileFromJar(String source, String destination) throws IOException{
File dest = new File(destination);
if(!dest.exists()){
dest.createNewFile();
}
InputStream in = null;
OutputStream out = null;
try{
in = this.getClass().getResourceAsStream(source); //Important step, it returns InputStream which can be manipulated as per need.
out = new FileOutputStream(dest);
byte[] buf = new byte[1024];
int len;
while((len = in.read(buf)) > 0){
out.write(buf, 0, len);
}
JOptionPane.showMessageDialog(null, "File Successfully copied at" + dest.getAbsolutePath());
System.out.println("File Writing......" + dest.getName());
}
finally{
in.close();
out.close();
}
}
现在我可以将文件从jar文件复制到用户指定的位置。 希望这可以帮助任何正在寻找同类问题的人。