简介

    /*
使用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+加载配置文件的更多相关文章

  1. springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...

  2. java加载配置文件

    有时候一些变量可能会变,但直接写在程序代码中不好,因为有时候需要改的时候要改动源代码,这时候可以使用配置文件来管理.比如数据库中的端口和密码. 1. 把.properties配置文件放在src目录下. ...

  3. Spring详解(十)加载配置文件

    在项目中有些参数经常需要修改,或者后期可能会有改动时,那我们最好把这些参数放到properties文件中,在源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...

  4. spring-自动加载配置文件\使用属性文件注入

    在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到W ...

  5. java动态加载配置文件

    最近项目中需要做定时任务,即定时数据库的备份.定时时间用户可以在界面中配置,要求配置修改好立即生效. 想不到什么好办法.下面是一种实现思路 把用户配置的时间存到properties配置文件中,定时任务 ...

  6. 19、属性赋值-@PropertySource加载外部配置文件

    19.属性赋值-@PropertySource加载外部配置文件 加载外部配置文件的注解 19.1 [xml] 在原先的xml 中需要 导入context:property-placeholder 声明 ...

  7. Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .

    我们往常进行文件的加载的时候 用到的都是  FileInputStream进行 文件的加载比如下面一个例子 : InputStream in=FileInputStream("1.prope ...

  8. java动态加载配置文件(申明:来源于网络)

    java动态加载配置文件 地址:http://blog.csdn.net/longvs/article/details/9361449

  9. 【Nutch2.2.1源代码分析之4】Nutch加载配置文件的方法

    小结: (1)在nutch中,一般通过ToolRunner来运行hadoop job,此方法可以方便的通过ToolRunner.run(Configuration conf,Tool tool,Str ...

随机推荐

  1. 万能BI工具时代,聊天记录也能做数据分析?

    最近知乎上有个问题火了: 看了高赞的一些答案,最大的感受就是:婚前"泰国.新加坡.印度尼西亚"婚后"玩具.幼儿园.全部都是娃".作为一个适龄青年,也突然对自己结 ...

  2. Fedora 30的升级方法

    Fedora 30 已经发布了.你可能希望将系统升级到最新版本的 Fedora.Fedora 工作站版本有图形化升级的方法.另外,Fedora 也提供了一个命令行方法,用于将 Fedora 29 升级 ...

  3. drawable如何修改图片大小

    这个问题刚开始遇到是导入图片太大,在网上找了许多教程大多都是采用setBounds()方法自己尝试许多次还是没成功,在经历了多达数个小时折磨后我找到两个方法1.在导入图片之前直接对图片进行修改大小.( ...

  4. Qt:QUrl

    1.说明 概述 一个代表URL的类,此外还支持国际域名(IDNs). 通常在初始化时传入QString构造QUrl,除此之外还能用setUrl(). URL有两种表示格式:编码.未编码.未编码URL常 ...

  5. in memory computing 存内计算是学术圈自娱自乐还是真有价值?

    如果单从初衷和预想的价值来看,还是很诱人的.在冯诺依曼体系中,cpu计算和memory存储是分离的,而两者之间的data movement会造成高延迟和高耗能. 关于PIM类似的思想在50年前曾有人提 ...

  6. 堪比JMeter的.Net压测工具 - Crank 入门篇

    1. 前言 Crank 是.NET 团队用来运行基准测试的基准测试基础架构,包括(但不限于)来自TechEmpower Web 框架基准测试的场景,是2021年.NET Conf 大会上介绍的一项新的 ...

  7. 面试官:Redis中哈希数据类型的内部实现方式是什么?

    面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string).哈希(hash).列表(list).集合(set).有序集合(zset). 面试官:哈希数据类型的内 ...

  8. ABP Framework 5.2 RC 发布及新增功能介绍

    ABP Framework 5.2 RC 新增功能 目录 ABP Framework 5.2 RC 新增功能 单层解决方案模板 EF Core 数据库迁移 UI 和 数据库 选项 API 版本控制 源 ...

  9. ERROR conda.core.link:_execute(481) 问题总结

    你好 在刚刚安装的Windows10 conda上,我很惊讶地被告知要将Navigator从1.7.0升级到1.8.2,因为我刚刚安装它.由于软件包没有安装在Navigator上,我尝试使用下面的命令 ...

  10. Mysql数据库索引的使用

    1.索引的使用 查询 表的锁show index from qk_auth_employee 2.走索引 EXPLAIN SELECT * from qk_auth_employee where Da ...