我在 Eclipse 中有以下包结构:
MyProject
|___ src
|___ package1
|___ file.properties
我用两种不同的方式读取 file.properties:
prop.load(getClass().getResourceAsStream("file.properties"));
和
BufferedReader br = new BufferedReader(new FileReader("src/file.properties"))
file.properties可以在运行时修改,所以当我提供jar文件时,我建议用户在jar文件的同一级别创建一个src文件夹并将文件放入其中。 但是,在创建 jar 之前,我需要指定文件路径中的 src 文件夹:
prop.load(getClass().getResourceAsStream("src/file.properties"));
当 FileReader 调用仍然有效时。
如何设置一个通用文件路径,能够在两种情况下工作(eclipse/开发环境和jar/生产环境)?
谢谢
最佳答案
您可以将外部 src
目录添加到 JAR list 中的 Class-Path
条目。这将使 src
目录可供 getResource()
访问。
但是,我不知道它在运行时更改该目录的内容时会如何表现 - 从未尝试过。
仅供引用:
在 Eclipse 中读取文件有点意外地“有效”。如果您运行应用程序,Eclipse 不会构建整个 JAR 并使用它。它仅将java文件编译为.class
文件并使用它们。整个应用程序仍然作为普通目录和文件而不是 JAR 文件位于文件系统上,这就是从文件读取有效的原因。
它不适用于 JAR 文件(及其内部资源),因为您无法直接从 JAR(zip) 存档中读取文件。如果您以分解的形式交付您的应用程序,它将适用于客户端以及您在 Eclipse 中的工作(并且无需额外的目录)。
关于java - 运行 .jar 时 getResourceAsStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45455319/