我的 .jar (program.jar/resources/img/image.gif) 中有一个图像,我想在我的 main 开头调用一个方法将它们复制到“C:\folder”。它应该检查文件“C:\folder\image.gif”是否存在,如果不存在,复制它。我已经研究过这个话题,但我找不到办法。这就是我所拥有的,它可以工作......但它会创建一个 0 字节的空文件(image.gif)。它创建一个文件,而不是我的 .jar中的文件。
代码:
//MyResources.saveResource("/resources/img/image.gif", "C:\folder", "image.gif");
public static void saveResource(String fromFile, String toFolder, String toFile){
InputStream stream = MyResources.class.getResourceAsStream(fromFile);
if (stream == null) {
//send your exception or warning
}
OutputStream resStreamOut;
int readBytes;
byte[] buffer = new byte [4096];
try {
resStreamOut = new FileOutputStream(new File (toFolder + File.separator + toFile));
while ((readBytes = stream.read(buffer)) != -1){ //LINE 80
resStreamOut.write (buffer, 0, readBytes);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
我也收到一个错误(一个 NullPointerException 解释了为什么文件为空,但我不知道如何解决):
Exception in thread "main" java.lang.NullPointerException at
com.github.CrafterPGSV.Chess.Library.MyResources.saveResource(MyResources.java:80)
at com.github.CrafterPGSV.Chess.Library.MyResources.createFolders(MyResources.java:61)
at com.github.CrafterPGSV.Chess.Chess.main(Chess.java:10)
我主要调用“MyResources.createFolders();” 如果文件夹不存在,则创建该文件夹。在“createFolders”结束时,它调用“saveResources(...)”来保存图像。