【问题标题】:Reading from config.properties file Maven project从 config.properties 文件中读取 Maven 项目
【发布时间】:2016-01-26 06:54:56
【问题描述】:

我是 maven 和 java 新手,我导入了 maven 项目,它有 config.properties 文件,这个文件包含

PATH_TO_QUERY_FILE=abc.txt

以及使用 config.properties 中的属性的类,如

queryFile = prop.getProperty("PATH_TO_QUERY_FILE");

我是否应该在配置中添加此文件的真实路径以使代码在运行时读取它?喜欢

PATH_TO_QUERY_FILE=/home/user/workspace/project/abc.txt 

还是不?

  • 当我mvn package 项目时,我在创建的jar 文件中没有找到这个文件,这是因为我要询问的真实路径吗?

Coder 使用了这个语句

FileInputStream finputstream = new FileInputStream( "/home/user/workspace/project/config.properties"); prop.load(finputstream); queryFile = prop.getProperty("PATH_TO_QUERY_FILE"); fos = new FileOutputStream(new File( prop.getProperty("PATH_TO_OUTPUT_FILE"))); finputstream.close();

【问题讨论】:

  • 如果你需要一些帮助,你应该添加一部分 maven sn-p
  • 你的文件在你项目的 src\main\resources 目录下吗?此目录中的文件将包含在 jar 中。
  • 抱歉回复晚了,我用导入的项目截图编辑了帖子
  • 我没有制作资源文件夹,我应该制作它吗?我应该放哪些文件?
  • 如果您想将属性文件放在一个单独的文件夹中,那么您必须在读取属性时指定“文件夹名/*.properties”

标签: java maven


【解决方案1】:

这取决于您计划如何分发您的应用程序。以及您如何阅读文件。基本上有两种选择:从文件读取和从类路径读取。

1.从文件中读取。

如果您通过将其传递给 File 构造函数或传递给某个 FileStream 来使用此路径,那么您应该知道您的路径将相对于工作文件夹进行解析。工作文件夹基本上是您启动java -cp .. some.MainClass 命令的文件夹。在这种情况下,您将不得不复制config.properties 文件并从适当的目录运行您的命令。文件配置在某种程度上更加灵活,如果您想更改该配置中的某些值,您不必重新构建应用程序(或手动重新打包)。如果您真的不打算在分发后更改值,通常最好将其包装在 jar 中并作为资源读取。

2。从资源中读取。

Java 具有从类路径读取资源的机制。为此,您首先需要将资源打包到您常用的 jar 中,即进入类路径。然后,您可以通过获取适当的类加载器引用将它们加载到您的程序中。通常你只需在上下文中使用任何类:

InputStream s = AnyClass.class.getClassLoader().getResourceAsStream("/config.properties");
//or shortcut version
InputStream s = AnyClass.class.getResourceAsStream("/config.properties");

//now can use this input stream as usually, i.e. to load as properties
Properties props = new Properties();
props.load(inputStream);

现在关于如何使用 maven 正确使用此资源加载的问题。默认情况下,maven 将 <MODULE_DIR>/src/main/resources 中的所有文件打包到生成的 jar 中。因此,您只需将abc.txt 放入<MODULE_DIR>/src/main/resources/whatever/abc.txt 并将其加载为...getResourceAsStream("/whaterver/abc.txt")。无论您如何运行您的应用程序:从 IDE 或打包后,这都会起作用。比你做过的任何事情都要去做。

【讨论】:

  • 感谢您的精彩插图,我使用编码器使用它的代码编辑了帖子
猜你喜欢
  • 2015-09-26
  • 2018-05-13
  • 2015-05-28
  • 2023-02-23
  • 2016-11-21
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多