[英]How to specify relative file path in Java file so that it can still work after the file is put in jar file?
假设我有一个需要使用绝对路径/home/gem/projects/bar/resources/test.csv访问文件的Java类:
package com.example
class Foo {
String filePath = ????? // path to test.csv
String lines = FileInputStream(new File(filePath).readAllLines();
}
Foo.java的路径是/ home / gem / projects / bar / src / com / example。
当然我不能指定资源文件的绝对路径。 这是因为jar文件将作为库分发,供任何客户端在自己的环境中使用。
假设像test.csv这样的资源文件总是在相对于项目根目录的相同路径中。 当创建包含Foo.class的jar时,此jar还包含相同路径(相对于项目根目录)的test.csv。
无论项目栏移动到何处,指定相对路径的方法是什么? 另外,我如何创建一个jar文件(可以在任何位置),以便资源文件test.csv的路径仍然正确。
为了简单起见,我使用了无效的Java API(readAllLines(),它读取所有行并返回包含整个文件内容的字符串。也不使用try / catch)。
假设csv文件既可以读取也可以写入。
我希望现在能说清楚。
将test.csv
文件放入src
文件夹并使用:
Foo.class.getResourceAsStream("/test.csv")
获取文件的InputStream
。 这将在项目移动的任何位置工作,包括打包为JAR文件。
例:
projectX创建的\\ src \\ Test.java
projectX创建\\资源\\ config.properties
如果您具有上述结构并且想要使用config.properties文件,则执行此操作:
InputStream input = new FileInputStream(“./ resources / config.projects”);
在此示例中,您不必担心将源打包到jar文件中。 您仍然可以随时修改资源文件夹。
使用getResource()
如图所示这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.