java-属性集properties+加载配置文件
简介
/*
使用properties集合存储数据,遍历取出properties集合中的数据
properties集合有一些操作字符串的特有方法
Object setProperty(String key, String value) 致电 Hashtable方法 put 。
String getProperty(String key) 使用此属性列表中指定的键搜索属性。相当于map的get
Set<String> stringPropertyNames() 返回此属性列表中的一组键,其中键及其对应的值为字符串,
包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。 相当于map集合中的keySet方法
*/
private static void show1(){
//
Properties prop = new Properties();
//使用setProperties
prop.setProperty("qq2","22");
prop.setProperty("qq4","44");
prop.setProperty("qq5","55");
//遍历,stringPropertiesNames 取出键,存储到Set集合
Set<String> set = prop.stringPropertyNames();
//遍历Set集合,key
for (String key: set) {
//
String value = prop.getProperty(key);
System.out.println(key+"::"+ value);
}
/*
qq5::55
qq4::44
qq2::22
*/
}
}
持久化
/*
可以使用properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中
void store(OutputStream out, String comments) 将此属性列表(键和元素对)写入此 Properties表中,
以适合于使用 load(InputStream)方法加载到 Properties表中的格式输出流。
void store(Writer writer, String comments) 将此属性列表(键和元素对)写入此 Properties表中,
以适合使用 load(Reader)方法的格式输出到输出字符流。
参数:
OutputStream out 字节输出流,不能写入中文
writer writer 字符输出流,可以写中文
String comments :注释,解析说明文件是做什么用的;
不能使用中文,会产生乱码,默认是unicode编码
使用步骤:
*/
public static void show2() throws IOException {
Properties prop = new Properties();
//使用setProperties
prop.setProperty("qq2","22");
prop.setProperty("qq4","44");
prop.setProperty("qq5","55");
FileWriter fw = new FileWriter("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay");
prop.store(fw,"save");
fw.close();
}
/*
#save
#Thu Jun 18 23:04:20 CST 2020//自动加
qq5=55
qq4=44
qq2=22
*/
普通操作“:
/*
使用properties集合存储数据,遍历取出properties集合中的数据
properties集合有一些操作字符串的特有方法
Object setProperty(String key, String value) 致电 Hashtable方法 put 。
String getProperty(String key) 使用此属性列表中指定的键搜索属性。相当于map的get
Set<String> stringPropertyNames() 返回此属性列表中的一组键,其中键及其对应的值为字符串,
包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。 相当于map集合中的keySet方法
*/
private static void show1(){
//
Properties prop = new Properties();
//使用setProperties
prop.setProperty("qq2","22");
prop.setProperty("qq4","44");
prop.setProperty("qq5","55");
//遍历,stringPropertiesNames 取出键,存储到Set集合
Set<String> set = prop.stringPropertyNames();
//遍历Set集合,key
for (String key: set) {
//
String value = prop.getProperty(key);
System.out.println(key+"::"+ value);
}
/*
qq5::55
qq4::44
qq2::22
*/
}
}
load

public class Demo5 {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
prop.load(new FileReader("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay"));
Set<String> set = prop.stringPropertyNames();
for (String key:set
) {
String value = prop.getProperty(key);
System.out.println(key+"::"+value);
}
/*
qq5::55
qq4::44
qq2::22
*/
}
}
加载配置文件
Source Root是源码的根目录,默认为src
Resource Root是资源文件的根目录,常用来放置配置文件,也可以放置其他资源文件
第一种方式
直接从文件种加载数据
目录结构:
public class Atest {
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
FileInputStream fis = new FileInputStream("resources\\quan.properties");
//使用这个路径是不行的
properties.load(fis);
String name = properties.getProperty("name");
String age = properties.getProperty("age");
System.out.println(name+age);
}
}
//re:quan12

问题:
这种加载资源的方式是从原项目中加载资源的,不是从部署的项目(输出目录)中加载资源的,你把部署好的项目拷给运维,运行报错:找不到这个资源文件。
不把resource文件夹标识为资源根目录,效果也是对的。因为是从原项目中加载的资源文件。
标识为Resource Root后,运行|调试时才会把这个目录复制到输出目录(部署目录)。

一般通过反射来加载配置文件
注意:
只有标识为Resource Root的文件夹run|debug时才会拷贝到输出目录|目录,拷贝时不拷贝资源根目录resource,
直接把resource下的子文件、子文件夹拷贝到输出目录中项目的根目录下,所以路径以/开头,/表示项目的根目录。
public class Atest {
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
InputStream is = Atest.class.getClassLoader().getResourceAsStream("quan.properties");
// InputStream is = Atest.class.getResourceAsStream("/quan.properties");不使用类加载器也是可以的,加载根目录
properties.load(is);
String name = properties.getProperty("name");
String age = properties.getProperty("age");
System.out.println(name+age);
}
}
关于用不用类加载器可以看看这篇:https://www.cnblogs.com/java-quan/p/13189202.html
java-属性集properties+加载配置文件的更多相关文章
- springboot属性类自动加载配置文件中的值
springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...
- java加载配置文件
有时候一些变量可能会变,但直接写在程序代码中不好,因为有时候需要改的时候要改动源代码,这时候可以使用配置文件来管理.比如数据库中的端口和密码. 1. 把.properties配置文件放在src目录下. ...
- Spring详解(十)加载配置文件
在项目中有些参数经常需要修改,或者后期可能会有改动时,那我们最好把这些参数放到properties文件中,在源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...
- spring-自动加载配置文件\使用属性文件注入
在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...
- java动态加载配置文件
最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...
- 19、属性赋值-@PropertySource加载外部配置文件
19.属性赋值-@PropertySource加载外部配置文件 加载外部配置文件的注解 19.1 [xml] 在原先的xml 中需要 导入context:property-placeholder 声明 ...
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .
我们往常进行文件的加载的时候 用到的都是 FileInputStream进行 文件的加载比如下面一个例子 : InputStream in=FileInputStream("1.prope ...
- java动态加载配置文件(申明:来源于网络)
java动态加载配置文件 地址:http://blog.csdn.net/longvs/article/details/9361449
- 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法
小结: (1)在nutch中,一般通过ToolRunner来运行hadoop job,此方法可以方便的通过ToolRunner.run(Configuration conf,Tool tool,Str ...
随机推荐
- 【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解
测试环境vs2019+.net5.0 请看 :https://cloud.tencent.com/developer/article/1507934 本测试环境vs2022+.net6.0 +wind ...
- .net 技术大全
我常说C#的入门技术是委托.事件.消息.只有当你可以纯熟运用这三个技能的时候,才刚刚入门,此时C#的大门才算正式为你打开.很多人在学了一些语法编写一些项目后就觉得C#精通了,其实你们还没入门呢(对日开 ...
- Windows命令(ping、telnet、netstat详解)
转至:https://www.cnblogs.com/lisuyun/articles/5864744.html netstat详解转自http://wsmajunfeng.iteye.com/blo ...
- Java课程设计---浏览学生(实现根据姓名查询)
1.修改窗口 2.在StudentDao中增加根据姓名查找的方法 public List<Student> getStudent(String name)throws SQLExcepti ...
- Hive表数据同步到es
1.首先服务器节点,进入到对应的数据库.2. 然后找到要同步的表,show create table + 表名查看一下或者自己可以新建一个表,用来测试原表,如下 CREATE TABLE `wb_tm ...
- Qt:QCoreApplication
0.说明 QCoreApplication提供了有关当前运行程序的相关信息,当前程序应当是非GUI程序.对于GUI程序,应该用QGuiApplication,而对于采用了Qt Widget模块的程序, ...
- Python:Scrapy(一) 基础知识与实例
学习自: Scrapy爬虫框架教程(一)-- Scrapy入门 - 知乎 Scrapy爬虫框架,入门案例(非常详细)_ck784101777的博客-CSDN博客_scrapy爬虫案例 爬虫框架Scra ...
- Pycharm:控制台输入输出In Out变为<<<
Setting中取消勾选'Use IPython if aviable'
- Linux的用户与用户组管理
1.Linux用户与用户组 Linux 是多用户多任务操作系统,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响.不同用户具有不问的权限,毎个用户在权限允许的范围 ...
- C#中?和:?和??代表什么
?代表可空类型修饰符 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.为了使值类型也可为空,就可以使用可空类型?:带便三元表达式 int a=b>c?b:c 如果 ...