我知道我的问题似乎已经得到了回答,但我无法找到答案。
我想要做的是从资源中获取文件类型,因此在打包时,可以访问它。我发现的答案是试图读取该文件,但我真正需要的是构造一个File对象,因为我有一个期待该对象的第三方库。
这是我尝试过的代码:
String xslFilePath = new Test().getClass().getResource("/com/test/decision_template.xsl").getPath();
System.out.println(xslFilePath);
File xsltfile = new File(xslFilePath);
System.out.println(xsltfile.getAbsolutePath()+", exist:"+xsltfile.exists());
我得到了这个结果:
C:\>java -jar test.jar
file:/C:/test.jar!/com/test/decision_template.xsl
C:\\file:\C:\test.jar!\com\test\decision_template.xsl, exist:false
java.io.FileNotFoundException: file:\C:\test.jar!\com\test\decision_template.xsl
(Syntaxe du nom de fichier, de rÚpertoire ou de volume incorrecte)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at com.test.Test.main(Test.java:30)
我需要一种获取该文件的方法,以便.exists()返回true。
答案 0 :(得分:0)
您可以尝试使用TrueZip库。这是相当不错。我相信你需要实现自己的DirectoryScanner或其他东西。
更好的是,只需敲击你自己的一个实现,它扫描你的类路径上的所有jar。我在GitHub上的一个项目中完成了Here's an example。我认为您可以轻松定制它以满足您的需求。
玩得开心! :)