使用“file:”前缀来记录Java文件名字符串中的路径?

时间:2017-06-30 01:07:40

标签: java eclipse javafx

获取Java项目的资源一直让我很困惑,因为我认为文档并没有很好地解释它,每次我需要在项目中使用它时我最终都要重新学习它。最近,使用JavaFX,我试图加载图像。构造函数需要一个表示文件路径的字符串。我过去曾想出一个非常hacky的方法,但我最近遇到了this StackOverflow帖子,接受的答案显示了一个非常简单的方法来引用Eclipse项目的顶层,这样我就可以了可以访问构建路径中的源文件夹,并轻松找到我的图像文件。

这个特殊的挡板是否有名称?还有其他类似的地方吗?在可执行的JAR中运行此代码时,是否会出现使用此表示法的问题?

任何信息都将不胜感激。如果这不是解决这个问题的最好方法,有人可以给我一个关于如何在将来做这个的充分,简单的解释,或者链接到一篇解释得很好的文章,那就太棒了。

2 个答案:

答案 0 :(得分:2)

您可以使用相对路径或绝对路径获取资源。相对路径从"工作目录"开始,这是您运行应用程序的目录。绝对路径是明确的。在类路径之前检查工作目录。这是在

这样的地方使用的
new File(filepath).

运行Java时,还需要考虑类路径。一些人寻找资源的另一种方式是

ClassLoader.getResource(String)

ClassLoader.getResourceAsStream(String)  

ClassLoader可以接受String作为相对路径,并将检查类路径中的每个位置。 https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)

人们通过将文件放在src文件夹中来获得结果,因为这通常会被复制到生成类文件的位置,该类文件包含在类路径中。 "顶级"你说的是工作目录。 Eclipse默认将工作目录设置为项目根目录。

答案 1 :(得分:0)

relevant wikipedia page很好地涵盖了file:计划。

但我们生活在一个混乱的世界中,各种软件可能符合旧标准,或者不完全符合任何标准,或者可能包括对替代语法的支持。不幸的是,理解用于特定软件系统的正确语法并不总是直截了当。