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 ...
随机推荐
- RENIX操作之XML报文模板说明——网络测试仪实操
我们在网络测试仪的日常使用过程中,经常涉及到编辑和修改报文.利用RENIX软件,可以把当前编辑好的报文模板导出为XML文件,下次使用时可以直接导入使用,从而提升测试工作效率.本文以"添加UD ...
- .Net Core之选项模式Options使用
一.简要阐述 ASP.NET Core引入了Options模式,使用类来表示相关的设置组.简单的来说,就是用强类型的类来表达配置项,这带来了很多好处.利用了系统的依赖注入,并且还可以利用配置系统.它使 ...
- 熟悉JSP教程学习
- UML类图的补充及软件设计原则
UML类图的补充及软件设计原则 UML 从目标系统的不同角度出发,定义了用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图等 9 种图. 1.uml补充 统一建模语言(Unified ...
- JZ-030-连续子数组的最大和
连续子数组的最大和 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和, 当向量全为正数的时候,问题很 ...
- 『现学现忘』Docker基础 — 16、Docker中的基本概念和底层原理
目录 1.Docker的底层原理 2.Docker中常用的基本概念 3.run命令的运行流程 4.为什么Docker比VM快 Docker架构图: 我们依照Docker架构图进行Docker基础概念的 ...
- laravel 怎么获取public路径
app_path() app_path函数返回app目录的绝对路径: $path = app_path(); 你还可以使用app_path函数为相对于app目录的给定文件生成绝对路径: $pa ...
- CF1515H口胡
居然一下就做出来了...不知道是不是对的/fad 考虑操作的本质,首先将所有元素插入线段树中. 来依次考虑每一种操作: 区间与 注意到这个操作类似将某些节点的右儿子合并到左儿子上,而一个节点最多被合并 ...
- JVM学习总结(一)
JVM--Java虚拟机 1.类加载器 JVM虚拟机的类加载器有三个 bootstrapClassLoader 引导类加载器 是有C语言编写,在JVM虚拟机启动时 加载到内存中负责加载rt.jar夹包 ...
- k8s原来这么简单(一)核心组件与工作原理
k8s官方文档:https://kubernetes.io/zh/docs/home/ 前提 掌握容器技术:Docker,Containerd等 K8S优势 使用简单,少量人/小团队可以轻松维护大型 ...