首页 > 编程知识 正文

properties文件追加,java读取属性文件

时间:2023-05-05 15:07:31 阅读:173971 作者:4918

个人资料

在进行一些Java APP开发时,在一个配置文件中定义了许多环境特定的变量。 常见的定义文件有xml、properties甚至txt等格式。 Java具有标准配置格式的文件:properties类型的文件。 主要用于保存以propertyname=propertyvalue等样式保存的命名值对的内容。 读取properties文件的方法各种各样,网上也有很多说明。 这里主要对两种典型的方法进行比较。

问题场景

现在,假设您有一个config.properties文件,其中包含以下信息:

Java代码

dbpassword=password

database=localhost

dbuser=user

我们想通过程序读取那个内容。

粗略地看,这个问题很简单。 然后,看看我们的第一个方法。

File IO

直接用File Stream的经典方法读取文件,进行分析不就可以了吗? 这个实现代码是以下:

Java代码

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.util.Properties;

公共类app {

publicstaticvoidmain (string [ ] args ) {

Propertiesprop=newProperties (;

try{

prop.load (new文件输入(config/config.properties ) );

system.out.println (prop.getproperty ) (database );

system.out.println (prop.getproperty ) (dbuser );

system.out.println (prop.getproperty (' db password ' ) );

}catch(ioexceptione ) {

e .打印任务跟踪(;

}

}

}

此代码创建一个java.util.Properties对象,指定properties文件,然后用FileInputStream读取该InputStream作为参数properties对象的load方法分析了结果。 执行此操作将产生以下结果:

Java代码

localhost

用户

密码

另一个需要注意的是,文件输入流的路径是当前相对路径。 这意味着config.properties文件必须位于class文件所在目录的config字目录下。

现在,在考虑其他方式之前,我们先来看看FileInputStream这种方式的特征。 在导入属性文件时,必须知道其路径。 如果采用文件输入流,则必须将文件的路径传递给程序。 如果找不到文件,程序将发生异常。 考虑到我们的程序在编译后往往部署在不同的生产环境中,如果每个环境都不一样,我们每次都会修改这个程序吗? 还是将配置文件所在的路径作为参数传递给程序? 这两种方式显然不太合适。 那么,有什么方法可以不用我修改程序或者故意把参数传递给程序吗? 另一种方法可以达到这个理想的结果。

类加载器

使用classloader的方法主要是使用getResourceAsStream方法加载属性文件。 有关具体细节,请查看以下示例:

Java代码

importjava.io.FileInputStream;

importjava.io.IOException;

importjava.util.Properties;

公共类新应用程序{

publicstaticvoidmain (string [ ] args ) {

Propertiesprop=newProperties (;

try{

prop.load (new app.class.getclass loader ).getresourceasstream (' config.properties ' ) );

system.out.println (prop.getproperty ) (database );

system.out.println (prop.getproperty (' dbuser ' ) );

system.out.println (prop.getproperty (' db password ' ) );

}catch(ioexceptione ) {

e .打印任务跟踪(;

}

}

}

这里没有为classloader指定特定的路径。 我只是直接传递了文件名。 如果将config.properties和class文件放在同一个目录中,结果将正常工作。 如果将properties放在其他位置,则会发生错误:

需要注意的问题:

如果类的存储路径为D:comfileFileUtility.java

包名称: package com.file;

属性文件路径问题-

如果传递的文件名为" test.property ",则text. Property文件必须位于D:comfile目录下。

如果传递的文件名为"/test.property ",则text. Property文件必须位于D:目录中

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。