亲爱的专家们,这个问题与
- 文件在java中不打开,后者位于JAR文件中。
更新问题
我用了两个密码
- 打开JAR文件中的Pdf文件
如果我从workspace.
URL resource = T().getContextClassLoader().getResource("resource;); File userGuideFile = null; try { userGuideFile = new File()); if ()) { Desktop desktop = De(); de(userGuideFile); } } catch (Exception e1) { e1.printStackTrace(); }
但如果我复制我的到另一个位置,它将不会打开文件,并在我的日志中显示为file is not found "c:\workspace\project...pdf"。我使用了以下代码同一页我的PdfReaderAdobe阅读器显示异常file is either not supproted or damaged :
代码:
if ()) { Desktop desktop = De(); InputStream resource = T().getContextClassLoader().getResource("resource;); try { File file = File.createTempFile("User_Guide", ".pdf"); (); OutputStream out = new FileOutputStream(file); try { // copy contents from resource to out } finally { out.close(); } de(file); } finally { re(); } }
注:我试着打开*.txt文件,它运行良好。但没有在PDF和DOC。主要问题是当我运行应用程序更改项目工作空间目录时。实际上我想做的是:Ntebeans键盘-下面的短代码文档Help菜单
一个罐子是一个压缩档案。所以首先来看看7zip/WinZip之类的。检查其中的路径确实是resource(大小写敏感!)很可能是在罐子里。
不能立即从资源中获取文件(=文件系统上的文件)(只是偶然)。所以一个人得到了一个InputStream.
InputStream in = getClass().getResource("/resource;);
NullPointerException找不到的时候。对于getclass,类必须位于同一个JAR中,在本例中,路径以/ .
现在您可以将输入流复制到某个临时文件中,并打开该文件。在Java 7中:
File file = File.createTempFile("User_Guide", ".pdf"); Files.Copy(in, ());
如果在Files.Copy行中获得FileAlreadyExistsException,则添加以下CopyOption:
Files.copy(in, (), S);
对于java<7:
// copy contents from resource to out byte[] buf = new byte[4096]; while ((int nread = in.read(buf, 0, buf.length)) > 0) { out.write(buf, 0, nread); }