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 ...
随机推荐
- [题解]Codeforces Round #709 (Div. 1, based on Technocup 2021 Final Round) - A. Basic Diplomacy
[题目] A. Basic Diplomacy [描述] Aleksey有n个朋友,有一个m天的假期,每天都需要一个朋友来陪他.给出每天有空的朋友的编号,要求同一个朋友来的天数不能超过m/2上取整.求 ...
- python数据结构:数组和列表
线性结构有两种:数组和列表 array和list 其中list各项操作的时间复杂度如下 因为insert是在头部插入 所以列表所有元素后移,时间复杂度为O(n) remove移除列表中某个值的第一个匹 ...
- 人工智能进度好慢,呜呜呜 还是先来学python!!!!!!!二十三讲、二十四讲!
0:十转2 def my_bin(x): a ='' if x : a = my_bin(x//2) return a+str(x%2) else: a+='0b' return a print(my ...
- 从菜鸟到高手, HMS Core图像分割服务教你如何在复杂背景里精细抠图
2021年以来,自动驾驶赛道进入爆发期,该行业成为大厂以及初创企业的必争之地.其中众多公司都采用了计算机视觉作为自动驾驶的技术底座,通过图像分割技术,汽车才能够有效理解道路场景,分清楚哪里是路,哪里是 ...
- 案例八:shell自动化管理账本脚本
该脚本目的帮助管理员创建账号.删除账号.锁定账号.解锁账号. #!/bin/bash #filename: #author: #date:2018-6-6 echo "用户管理程序" ...
- linux 下面启动nginx 和关闭nginx
linux 下面启动nginx 和关闭nginx, 查看linux 开放的所有端口netstat -ntpl,重启服务命令 :service network restart 1 进入到安装的目录里面 ...
- VUE3 之 使用标签实现动画与过渡效果(下) - 这个系列的教程通俗易懂,适合新手
1. 概述 毛毛虫效应: 有这样一个实验,将许多毛毛虫放在一个花盆边缘,使它们首尾相接,围成一个圈.然后在离花盆很近的地方撒了一些毛毛虫的食物. 此时,毛毛虫并不会向食物的方向爬去,而是在花盆边缘,一 ...
- Python:对元组使用关键字in
如果in的左边是个含有多个元素的元组对象 例如 ('a','b') in L 那么L在什么情况下,这个式子会输出True呢? 答案是,L中必须也有一个和想要查找的元组一模一样的元组才行,比如: L=[ ...
- 用Assert(断言)封装异常,让代码更优雅(附项目源码)
有关Assert断言大家并不陌生,我们在做单元测试的时候,看业务事务复合预期,我们可以通过断言来校验,断言常用的方法如下: public class Assert { /** * 结果 = 预期 则正 ...
- ansible二进制部署kubernetes集群
kubernetes版本1.21.5 需要的资源文件请自行到我的阿里云盘下载 https://www.aliyundrive.com/s/zVegF78ATDV 修改主机信息 #根据自己的主机信息自行 ...