【发布时间】:2021-04-19 06:50:34
【问题描述】:
我正在使用 Java11 在 Eclipse 中开发应用程序。我已经创建了一个路径,但是这个路径是特定于我的系统的。
file://D:/my_proj/darp/src/test/resources/rmtrep
我想要一个通用路径,以便在不更改此变量的情况下让项目也可以在其他计算机上运行。
此处使用包含路径的字符串,如下所示:
public void my_file(String string) {
myFile = URI.create(string);
}
我想要做的是使用这样的文件路径:
file://darp/src/test/resources/rmtrep
并在函数 my_file 中使用字符串以获得完整路径的结果,如下所示:file://D:/my_proj/darp/src/test/resources/rmtrep
任何想法?谢谢!
【问题讨论】:
-
基于路径,你拥有的不是文件而是资源。从概念上讲,两者是不同的(即使资源有时是底层文件)。使用 API 访问资源(例如
Class#getResource(String)、Class#getResourceAsStream(String)等)。 -
谢谢,但这并不能真正解决我的任务,如果我使用“file://”,路径将无法使用
-
当然不是。但是,如果您拥有的是资源,那么
file://无论如何都是错误的。阅读我提到的 API 文档,了解参数使用的语法。 -
顺便说一句,如果您需要的是
URI,那么您可以简单地使用getResource(...).toURI()。当资源是文件时,您将获得一个file://URI。当资源打包在 JAR 中时,您将获得一个jar:file//URI。 -
但是“rmtrep”是一个文件夹,当我尝试使用它时出现空指针异常。字符串不为 null,但 getResource(string) 返回 null