0

Java アプリケーションからファイルを開こうとしました。から次のコードを使用する

Java アプリケーションから PDF ファイルをその場で開く

コード:

if (Desktop.isDesktopSupported()) {
    try {
        File myFile = new File("/path/to/file.pdf");
        Desktop.getDesktop().open(myFile);
    } catch (IOException ex) {
    // no application registered for PDFs
    }
}

次のようなパスを使用する場合:

"C:\\Users\\kalathoki\\Documents\\NetBeansProjects\\TestJava\\src\\files\\test.pdf" 

それが開きます。しかし、私のファイルは私のパッケージの中にあります

files/test.pdf 

そして私は使った

files\\test.pdf 

次の例外が表示されます。

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: The file: \files\test.pdf doesn't exist.

なんで?任意のアイデア... ユーザーがいつでもアプリケーションから開くことができる jar ファイル内に自分のファイルを含めたいと考えています。

ありがとう...

4

4 に答える 4

1

残念ながら、jar に含まれているファイルを Desktop からロードすることはできません。

ただし、選択肢がないわけではありません。優れた回避策は、一時ファイルを作成してから、ここで説明されているように開くことです。

幸運を!

于 2013-09-25T16:24:58.443 に答える
1

test.pdf がパッケージファイルにあると仮定して、これを試してください:

File myFile = new File(getClass().getResource("/files/test.pdf").toURI());
于 2013-09-25T16:27:08.153 に答える
0

このコードは正常に動作しています。これを使用して jar ファイル内の pdf ファイルを開きます

    try {
        // TODO add your handling code here:
        String path = jTextField1.getText();
        System.out.println(path);
        Path tempOutput = null;
        String tempFile = "myFile";
        tempOutput = Files.createTempFile(tempFile, ".pdf");
        tempOutput.toFile().deleteOnExit();
        InputStream is = getClass().getResourceAsStream("/JCADG.pdf");
        Files.copy(is,tempOutput,StandardCopyOption.REPLACE_EXISTING);
        if(Desktop.isDesktopSupported())
        {
            Desktop dTop = Desktop.getDesktop();
            if(dTop.isSupported(Desktop.Action.OPEN))
            {
                dTop.open(tempOutput.toFile());
            }
        }
    } catch (IOException ex) {}
于 2016-02-23T01:43:05.397 に答える