小编典典

如何从ouside读取jar资源中的文件

java

我在abc.jar的类路径中有一个文件X.json。abc.jar中有一个readFile方法,该文件读取为

URL url = Abc.class.getClassLoader().getResource("X.json");  
File file = new File(url.toURI());*

如果我从jar的上下文中运行它,即在abc.jar内的某个文件中的main方法中运行它,它将很好地读取

但是,当从abc.jar外部从其他代码中调用readFile时,它将失败 java.lang.IllegalArgumentException: URI is not hierarchical

如何通过从jar的上下文外部调用readFile方法获取File对象?


阅读 210

收藏
2020-11-30

共1个答案

小编典典

到部署时,这些资源将成为嵌入式资源。在这种情况下,必须使用URL而不是访问资源File。有关标签的信息,请参见信息页面,以了解形成的方法URL

嵌入到应用程序本身的二进制文件中的资源(例如图像和帮助文件),通常不作为文件提供。

嵌入式资源是嵌入到应用程序本身的二进制文件中的资源,例如图像和帮助文件。此类资源通常无法作为文件使用。有许多方法可用于从大多数语言的URL或输入流中加载资源。

Java

这样可以形成一个URL,该URL指向基于Java的应用程序的运行时类路径上Jar中的嵌入式资源。

URL url = this.getClass().getResource("/path/to/the.resource");

这是形成从嵌入式资源读取的输入流的方式:

InputStream is = this.getClass().getResourceAsStream("/path/to/the.resource");
2020-11-30