运行 .jar 时 getResourceAsStream

晶圆厂

我在 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 可以在runtine 中修改,所以当我提供jar 文件时,我建议用户在jar 文件的同一级别创建一个src 文件夹并将该文件放入其中。但是,在创建 jar 之前,我需要指定文件路径中的 src 文件夹:

prop.load(getClass().getResourceAsStream("src/file.properties"));

而 FileReader 调用仍然有效。

如何设置通用文件路径,能够在两种情况下(eclipse/开发环境和 jar/生产环境)工作?

谢谢

安东尼奥斯

您可以将外部src目录添加Class-PathJAR 清单中条目。这将使src用于目录访问getResource()

但是,我不知道它在运行时更改该目录的内容时会如何表现 - 从未尝试过。

仅供参考:偶然在 Eclipse 中读取文件“有效”。如果您运行您的应用程序,Eclipse 不会构建和使用整个 JAR。它只将 java 文件编译为.class文件并使用它们。整个应用程序仍然在文件系统上作为普通目录和文件而不是 JAR 文件,这就是为什么从文件读取工作。

它不适用于 JAR 文件(和内部资源),因为您无法直接从 JAR(zip) 存档中读取文件。如果您以分解形式交付您的应用程序,那么它既适用于客户端,也适用于 Eclipse(无需附加目录)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章