0

我知道我的问题似乎以前已经得到解答,但我找不到我的案例的答案。

我想要做的是从资源中获取一个文件类型,所以当它被打包时,它可以被访问。我找到的答案是试图读取该文件,但我真正需要的是构造一个 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。

4

1 回答 1

0

你可以试试 TrueZip 库。这是相当不错。我相信您需要实现自己的 DirectoryScanner 或其他东西。

更好的是,只需敲出一个您自己的实现,它会扫描您的类路径上的所有 jar。这是我在 GitHub 上的一个项目中如何做到这一点的示例。我认为您可以轻松地对其进行定制以满足您的需求。

玩得开心!:)

于 2013-02-27T19:07:34.523 回答