2

実行可能 jar にテンプレート ファイル (.xls) がある状況があります。いいえ、実行時に、このファイルの数百のコピーを作成する必要があります(後で一意に追加されます)。jarファイル内のリソース(template.xls)を取得するため。私は使っている

URL templateFile=G1G2Launcher.class.getClass().getResource(File.separator+"Template.xls");
            System.out.println("URL-->"+templateFile);
            System.out.println("URI For Source-->"+templateFile.toURI().getPath());
            sourceFile=templateFile.toURI().getPath();

templateFile.toURI.getPath()考えられる理由は何ですか??で null 値を取得しています。これは私が得たものです:

URL--> jar:file:/home/eketdik/Desktop/G1G2-KD@Tool.jar!/Template.xls
URI For Source-->null

実際には、この URI を File コンストラクターに渡して、ファイル オブジェクトを取得します (コピー用)。したがって、スタック トレースは -->

java.lang.NullPointerException
    at java.io.File.<init>(File.java:251)
    at gui.Utility.copyfile(Utility.java:29)
    at printer.Printer.printFinalSiteWiseReportsForSignOff(Printer.java:1408)

どこが間違っているのか教えてください??

4

2 に答える 2

2

実行時に Jar のファイルを変更することは不可能です。

そのため、ファイルを入力ストリームとして取得し、jar の外側にコピーを作成できます。以下のコードは、必要に応じてファイルを作成するのに役立ちます。

InputStream in = G1G2Launcher.class.getClass().getResourceAsStream("file.xls")
OutputStream out = new FileOutputStream(new File("file.xls"));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = in.read(bytes)) != -1) {
    out.write(bytes, 0, read);
}
于 2012-12-27T10:13:38.537 に答える
0

getResourceAsStream(String res)を使用するだけです。

于 2012-12-27T10:13:48.307 に答える