.jar (program.jar/resources/img/image.gif) にイメージがあり、メインの開始時にメソッドを呼び出して、それらを "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(...)」を呼び出して画像を保存します。