繁体   English   中英

从config.properties文件中读取Maven项目

[英]Reading from config.properties file Maven project

我是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文件中找到这个文件时,这是因为我正在询问的真实路径吗?

在此输入图像描述

编码员使用了这个陈述

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();

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

1.从文件中读取。

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

2.从资源中读取。

Java有一种从类路径中读取资源的机制。 要做到这一点,首先需要在通常的jar中打包资源,然后再转到classpath。 然后,您可以通过获取适当的类加载器引用将它们加载到您的程序中。 通常你只需在上下文中使用任何类:

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或打包后。 无论你做了什么,都要做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM