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 ...
随机推荐
- 网络测试技术——802.1X TLS认证(上篇)
一.TLS认证简介 1.TLS认证 (1)认证过程 · 最安全认证技术 · 实施最复杂 (2)TLS双向证书认证 · 服务器对客户端进行认证 · 客户端对服务器进行认证 2.TLS认证过程 3.交换机 ...
- 商业智能BI必备的特性,BI工具介绍
商业智能BI的本质 对企业来说,商业智能BI不能直接产生决策,而是利用BI工具处理后的数据来支持决策.核心是通过构建数据仓库平台,有效整合数据.组织数据,为分析决策提供支持并实现其价值. 传统的DW/ ...
- 企业BI应用解决方案主要包括哪些方面?
BI的地位 在实际的BI应用过程中,很多企业对数据分析的概念仅为雏形,且业务人员往往难以了解自身数据分析的需求.这就造成很多BI需求调研在和业务人员沟通的环节,业务人员难以明确需求,这使得BI沦为一个 ...
- 使用helm安装nfs-subdir-external-provisioner实现动态创建存储
存储组件 nfs-subdir-external-provisioner 是一个存储资源自动调配器,它可用将现有的 NFS 服务器通过持久卷声明来支持 Kubernetes 持久卷的动态分配.此组件是 ...
- NTLK情感分析安装与使用的两种方式 nltk-python
下载安装到实战详细步骤 NLTK下载安装 先使用pip install nltk 安装包 然后运行下面两行代码会弹出如图得GUI界面,注意下载位置,然后点击下载全部下载了大概3.5G. import ...
- Map<String,String>转Json转Base64
Map<String,String> configMap = new HashMap<String,String>();System.out.println("JSO ...
- Oracle之SQL语句的分类
SQL简介 SQL:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库 ...
- LeetCode-097-交错字符串
交错字符串 题目描述:给定三个字符串 s1.s2.s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:http ...
- 2022年官网下安装MongoDB最全版与官网查阅方法(5.0.6)
一.下载安装 1.百度搜索,找到官网,或直接访问:https://www.mongodb.com/ 2.寻找下载位置,双击下载. 3.找到本地位置,双击执行,进入欢迎界面,选择next. 4.勾选协议 ...
- Java基础—字符串的比较
1."=="方法进行比较时有以下两种情况: 基础数据类型:比较的是数据值是否相同 引用类型:比较的是地址值是否相同 字符串是对象,它比较内容是通过一个方法实现的,equals() ...