这是我的问题。
我的软件包设置为:
-src
---- foo
-------- code.java
---- foo.data
-------- files I need to access
目前,我有一个罐子,里面包含了我需要访问的所有上述文件。我将在我的机器上运行这些代码,并将在我机器上初始化的File对象发送到另一台运行相同jar的机器。
我的问题是,如何获得数据文件的相对路径,以便当我将file对象发送到另一台机器时,它们知道要在jar中查找?
我需要访问数据文件,以便对其执行方法。因此,我需要用它创建一个新的文件(相对/path/to/jar/data/files),然后我将把file对象传递给另一台计算机进行计算。
目前我已经能够使用getClass().getResource("data/"+"filename").getPath(),这给了我一个类似文件的路径:/pathtojar/pathtofileinjar/我认为它将能够在另一台机器中找到jar,但当我试图使用jar中的项时,我得到了空指针。jar中的文件可以使用吗?或者有解决方法吗?
为什么不发送jar中文件的相对路径,而不是file?然后,另一个程序可以使用该路径并从jar中读取数据。
你能试试绝对路径吗,比如:
package resourcetest;
import java.net.URL;
public class ResourceTest {
public static void main(String[] args) {
new ResourceTest().test();
}
private void test() {
URL res = this.getClass().getResource("/data/data.txt");
System.out.println(res);
}
}
这里我要访问的数据文件是data/data.txt
src\resourcetest\resourcetest.class(此类运行并尝试访问data/data.txt
src\data\data.txt