文件未在jar文件中的java中打开
我试图从java应用程序中打开文件。使用来自的以下代码 代码: 当我使用如下路径时:文件未在jar文件中的java中打开,java,file-io,fileinputstream,fileoutputstream,Java,File Io,Fileinputstream,Fileoutputstream,我试图从java应用程序中打开文件。使用来自的以下代码 代码: 当我使用如下路径时: "C:\\Users\\kalathoki\\Documents\\NetBeansProjects\\TestJava\\src\\files\\test.pdf" 它打开了。但是我的文件在我的包里 files/test.pdf 我曾经 files\\test.pdf 它显示以下异常: Exception in thread "AWT-EventQueue-0" java.lang.Illega
"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文件中包含我的文件,用户需要时可以从我的应用程序打开该文件
谢谢…只允许从文件系统打开文件。一种解决方案是将PDF文件本地保存在文件系统中并从中读取。这消除了从JAR本身提取文件的问题,因此效率更高。只允许从文件系统打开文件。一种解决方案是将PDF文件本地保存在文件系统中并从中读取。这消除了从JAR本身提取文件的过程,因此效率更高。不幸的是,您无法通过JAR中包含的桌面加载文件 然而,你并不是没有选择。一个很好的解决方法是创建一个临时文件,然后按详细说明打开它
祝你好运 不幸的是,您无法通过jar中包含的桌面加载文件 然而,你并不是没有选择。一个很好的解决方法是创建一个临时文件,然后按详细说明打开它
祝你好运 假设test.pdf在包文件中,请尝试以下操作:
File myFile = new File(getClass().getResource("/files/test.pdf").toURI());
假设test.pdf在包文件中,请尝试以下操作:
File myFile = new File(getClass().getResource("/files/test.pdf").toURI());
此代码工作正常。请使用此代码在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) {}
此代码工作正常。请使用此代码在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) {}
如果此类的文件位于src内部,然后将路径更改为files/test.pdfw为什么要使用
files\\test.pdf
打开files/test.pdf
?@Tichodroma实际上C:\\Users\\kalathoki\\Documents…
工作了,所以我尝试了files\\test.pdf
和test.pdf
文件在文件
package>中您是否尝试了新的path/to
从/path/到?new还可以尝试显示新文件(“.”)的绝对路径代码>这肯定会有帮助。我没有阅读我想把我的文件放在我的项目jar文件中。
部分,对不起。使用InputStream is=System.class.getResourceAsStream(“/path/to/file.pdf”)
将其作为InputStream
获取,如果此类的文件位于src内,然后将路径更改为files/test.pdfw为什么要使用files\\test.pdf
打开files/test.pdf
?@Tichodroma实际上C:\\Users\\kalathoki\\Documents…
工作了,所以我尝试了files\\test.pdf
和test.pdf
文件在文件
package>中您是否尝试了新的path/to
从/path/到?new还可以尝试显示新文件(“.”)的绝对路径代码>这肯定会有帮助。我没有阅读我想把我的文件放在我的项目jar文件中。
部分,对不起。使用InputStream is=System.class.getResourceAsStream(“/path/to/file.pdf”)
以InputStream
的形式获取它实际上不是真的,在Linux getDesktop()下,open()允许打开jar中的文件,Windows显然不允许。在您链接的文档中,他们没有提到您描述的限制。事实上,这不是真的,在Linux getDesktop()下。open()允许打开jar中的文件,Windows显然不允许。在您链接的文档中,他们没有提到您描述的限制。