Java-如何打开位于jar文件中的文件

Java-如何打开位于jar文件中的文件,java,Java,我正在使用eclipse我在我的src文件夹中放了一个.pdf文件,我想用默认的操作系统程序打开它。问题是,如果我用eclipse执行程序,我可以像这样打开它(单击菜单项): File memo=new File("src/chap.pdf"); try { Desktop.getDesktop().open(memo); } catch (IOException e) { e.printStackTrace();

我正在使用eclipse
我在我的
src
文件夹中放了一个.pdf文件,我想用默认的操作系统程序打开它。问题是,如果我用eclipse执行程序,我可以像这样打开它(单击菜单项):

File memo=new File("src/chap.pdf");
         try {
            Desktop.getDesktop().open(memo);
        } catch (IOException e) {
            e.printStackTrace();
        }

但是,在将项目导出到jar文件后,这将不再起作用。
那么,我的代码中是否存在问题,或者是否有其他方法可以在jar文件中打开该文件?

导出程序后,
src
路径将不可用,您不应该以任何方式引用它

您需要从Jar文件中提取资源并将其写入本地磁盘

try (InputStream is = getClass().getResourceAsStrea("/chap.pdf")) {
    try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(...)) {
        // Write contents like you would any file
    }
} catch (IOException exp) {
    exp.printStackTrace();
}

然后,您可以将提取的文件与
桌面一起使用

导出程序后,
src
路径将不可用,您不应以任何方式引用它

您需要从Jar文件中提取资源并将其写入本地磁盘

try (InputStream is = getClass().getResourceAsStrea("/chap.pdf")) {
    try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(...)) {
        // Write contents like you would any file
    }
} catch (IOException exp) {
    exp.printStackTrace();
}

然后,您可以将提取的文件与
桌面一起使用

导出程序后,
src
路径将不可用,您不应以任何方式引用它

您需要从Jar文件中提取资源并将其写入本地磁盘

try (InputStream is = getClass().getResourceAsStrea("/chap.pdf")) {
    try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(...)) {
        // Write contents like you would any file
    }
} catch (IOException exp) {
    exp.printStackTrace();
}

然后,您可以将提取的文件与
桌面一起使用

导出程序后,
src
路径将不可用,您不应以任何方式引用它

您需要从Jar文件中提取资源并将其写入本地磁盘

try (InputStream is = getClass().getResourceAsStrea("/chap.pdf")) {
    try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(...)) {
        // Write contents like you would any file
    }
} catch (IOException exp) {
    exp.printStackTrace();
}

然后,您可以将提取的文件与
桌面一起使用

您应该将该文件恢复为一个资源,如下所示:只需做一个小检查,选择jar文件并将其解压缩,或者将.jar分解为文件夹层次结构。检查它是否包含.pdf文件。您应该将该文件恢复为一个资源,如图所示:只需做一个小检查,选择jar文件并解压缩它,或者将.jar分解为文件夹层次结构。检查它是否包含.pdf文件。您应该将该文件恢复为一个资源,如图所示:只需做一个小检查,选择jar文件并解压缩它,或者将.jar分解为文件夹层次结构。检查它是否包含.pdf文件。您应该将该文件恢复为一个资源,如图所示:只需做一个小检查,选择jar文件并解压缩它,或者将.jar分解为文件夹层次结构。检查一下.pdf是否包含在itinside try块中,java.io.File#createTempFile是一种合适的方式???@SrinathGanesh,这取决于您。如果您想节省时间,可以将文件提取到“已知”位置,并在再次提取之前检查它是否存在…在try block中,java.io.file#createTempFile将是一种合适的方法???@SrinathGanesh这取决于您。如果您想节省时间,可以将文件提取到“已知”位置,并在再次提取之前检查它是否存在…在try block中,java.io.file#createTempFile将是一种合适的方法???@SrinathGanesh这取决于您。如果您想节省时间,可以将文件提取到“已知”位置,并在再次提取之前检查它是否存在…在try block中,java.io.file#createTempFile将是一种合适的方法???@SrinathGanesh这取决于您。如果您想节省时间,可以将文件解压缩到“已知”位置,并在再次解压缩之前检查文件是否存在。。。