获取 Java 项目的资源一直让我感到相当困惑,因为在我看来,文档并没有很好地解释它,而且每次我需要在项目中使用它时,我最终都必须重新学习它。最近,我尝试使用 JavaFX 加载图像。构造函数需要一个表示文件路径的字符串。我过去想出了一个非常hacky的方法来做到这一点,但我最近遇到了this StackOverflow 帖子和接受的答案显示了引用 Eclipse 项目顶层的非常简单的方法,以便我可以访问构建路径中的源文件夹并轻松找到我的图像文件。
这个特定的分隔符有名称吗?还有其他类似的分隔符吗?在可执行 JAR 中运行此代码时使用此表示法会出现问题吗?
任何信息将不胜感激。如果这不是解决这个问题的最佳方法,并且有人可以给我一个充分、简单的解释,说明将来如何做到这一点,或者提供一个很好解释它的文章的链接,那就太好了。
最佳答案
您可以使用相对路径或绝对路径获取资源。相对路径从“工作目录”开始,这是应用程序运行的目录。绝对路径是明确的。在类路径之前检查工作目录。这就是在诸如
之类的地方使用的new File(filepath).
当你运行Java时,还需要考虑类路径。有些人寻找资源的另一种方式是
ClassLoader.getResource(String)
和
ClassLoader.getResourceAsStream(String)
类加载器可以接受字符串作为相对路径,并将检查类路径中的每个位置。 https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)
人们通过将文件放在 src 文件夹中来获取结果,因为它通常会被复制到生成类文件的位置,该文件包含在类路径中。 您所说的“顶层”是工作目录。 Eclipse 默认将工作目录设置为项目根目录。
关于java - 在 Java 文件名字符串中使用 "file:"前缀作为文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837146/