getResourceAsStream() 搜索文件 [duplicate]

getResourceAsStream() search for file [duplicate]

提问人:fabianod 提问时间:11/17/2023 更新时间:11/18/2023 访问量:37

问:

我需要帮助才能在我的应用程序中工作。String.class.getResourceAsStream()

这是我的树目录:

\src 
|--java
|    |--it.x.y.z.q
|                |-- Main.java 
|                |-- config
|                    |-- ConfigHandler.java
|--resources
   |--config
      |--file.properties

该文件包含该函数。在文件中,是实际调用 的函数。Main.javamain()ConfigHandler.javaString.class.getResourceAsStream(path)

从类似的问题中,我已经阅读了在类所在的同一文件夹中搜索文件。getResourceAsStream()

所以,对我来说,路径应该是:.我正在使用 Windows 作为操作系统,所以我需要放置双反斜杠,我已经做到了。..\..\..\..\..\..\..\resources\config\file.properties

无论如何,运行

InputStream is7 = String.class.getResourceAsStream("..\\..\\..\\..\\..\\..\\..\\resources\\config\\file.properties")

我得到一个空项目。为什么?

如何在不移动文件的情况下完成此操作?

Java 输入流

评论

3赞 Mark Rotteveel 11/17/2023
你对什么做了不正确的假设。它不访问文件系统上的文件。它访问类路径上的资源(和类)。您应该使用(假设文件夹的内容位于类路径的根目录上,这是常见的约定)。getResourceAsStreamgetResourceAsStream("/config/file.properties")resources
1赞 Mark Rotteveel 11/17/2023
在任何情况下,您都会得到,因为 - 正如 API 文档所说 - “如果没有找到具有此名称的资源,则为 null”。此外,不能保证看到您的资源(取决于确切的类加载器层次结构),通常您应该使用同一应用程序/库中的类。nullString.class.getResourceAsStream
0赞 fabianod 11/17/2023
该文件夹与该文件夹位于同一级别。由于我在 Windows 中,我应该使用 \\ istead /,对吧?在这两种情况下,它都没有奏效。resourcesjava
3赞 Mark Rotteveel 11/17/2023
不。资源不是文件系统上的东西(尽管它最终可能是从文件系统中获取的)。它是类路径上的内容,类路径用作分隔符。根据它的构建和运行方式,使用的实际文件可能在其他地方(例如,在某个临时或文件夹中,甚至已经打包在 JAR 中)。/buildout
1赞 fabianod 11/17/2023
好的,我做到了!我只是换了.String.class.getResourceAsStream("/config/file.properties")ConfigHandler.class.getResourceAsStream("/config/file.properties")

答: 暂无答案