如何启动Java中的PDF文件?
我在Netbeans上创建了一个Java应用程序,我想在单击按钮时启动一个PDF文件 我首先做的是将文件“manual.pdf”放在我上课的目录中,我尝试了以下代码:如何启动Java中的PDF文件?,java,file,javafx,Java,File,Javafx,我在Netbeans上创建了一个Java应用程序,我想在单击按钮时启动一个PDF文件 我首先做的是将文件“manual.pdf”放在我上课的目录中,我尝试了以下代码: if(Desktop.isDesktopSupported()) { try { File file= new File("manual.pdf"); Desktop.getDesktop().open(file); } catch(IOException ex) {..
if(Desktop.isDesktopSupported()) {
try {
File file= new File("manual.pdf");
Desktop.getDesktop().open(file);
} catch(IOException ex) {...}
但是当我运行它时,它说文件不存在,所以我把
System.out.println(file.getAbsolutePath());
为了查看它试图打开的文件的路径,它
C:\Users\adrian\Documents\Mis Programas\Convertron\manual.pdf
但是文件在里面
C:\Users\adrian\Documents\Mis Programas\Convertron\src\org\sicadcam\convertron\manual.pdf
它正在项目的根目录中查找文件
当我将文件manual.pdf
放在根目录中时,它工作了,但当我在dist目录中运行可执行jar时,它没有工作
然后我试了一下
File file = new File(ConvertronController.class.getResource("manual.pdf").toExternalForm());
只是想看看会发生什么,但没用
如何使它在类所在的同一目录中查找文件
或者,我应该将文件放在哪里,以便在构建应用程序时,它能够继续工作?我已经使用过,这是过去:
getClass().getResource(“a_file.txt”)代码>
在这种情况下,调用它的类与a_file.txt
位于同一目录中。您可以将PDF文档放入Java包中,例如资源
,如下一个项目结构:
TestProject
|
\---src
|
+---org
| \---paulvargas
| \---test
| OpenTest.java
|
\---resources
manual.pdf
要打开文件,请执行以下操作:
package org.paulvargas.test;
import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class OpenTest {
public static void main(String[] args) throws Exception {
if (Desktop.isDesktopSupported()) {
// File in user working directory, System.getProperty("user.dir");
File file = new File("manual.pdf");
if (!file.exists()) {
// In JAR
InputStream inputStream = ClassLoader.getSystemClassLoader()
.getResourceAsStream("resources/manual.pdf");
// Copy file
OutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.close();
inputStream.close();
}
// Open file
Desktop.getDesktop().open(file);
}
}
}
谢谢你的回答。我试过了,当我打印文件的路径时,我认为它是正确的,它说它是C:\Users\adrian\Documents\Mis%20Programas\Convertron\dist\run1978651465\Convertron.jar\recursos\manual.pdf
,但它不会打开该文件。我打开了jar文件,以确保文件manual.pdf
位于正确的目录中,并且正确无误。我没有收到任何错误消息,只是没有打开。没错。在这种情况下,您需要将JAR中的文件复制到某个目录。我更新了我的答案。祝你好运因为这个问题是用JavaFX标记的,所以我认为这可能会引起兴趣: