当前位置: 首页>行业 >

全球观热点:Java如何读写Properties配置文件(Properties类)

来源: 脚本之家 | 时间: 2023-05-13 11:58:18 |

目录
Java读写Properties配置文件Properties基本介绍Properties常用方法Properties读取配置文件Properties写入配置文件properties文件的读取和写入properties文件的读取properties文件的写入总结

Java读写Properties配置文件

Properties基本介绍

专门用来读写配置文件的集合类,Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。


(资料图片仅供参考)

属性列表可以包含另一个属性列表作为其“默认值”; 如果在原始属性列表中找不到属性键,则会搜索此第二个属性列表。

因为Properties从继承Hashtable时, putputAll方法可应用于Properties对象。 强烈不鼓励使用它们,因为它们允许调用者插入其键或值不是Strings 。 应该使用setProperty方法。

如果storesave方法在包含非String键或值的“受损害”Properties对象上调用,则调用将失败。

类似地,如果在包含非String密钥的“受损害”Properties对象上调用propertyNames或list方法的调用将失败。

配置文件的格式:键 = 值(key = value)

PS:键值对不需要有空格,值不需要用引号包起来。默认类型为String

properties是配置文件。

主要的作用是通过修改配置文件可以方便地修改代码中的参数,实现不用改class文件即可灵活变更参数。

解释:java运行中java文件会变成class文件,之后无法通过反编译找到原样的代码,这样的话,如果java类中某个参数变更,就很难灵活的实现参数修改,这个时候properties 文件就能很灵活的实现配置,减少代码的维护成本和提高开发效率。

Properties常用方法

load()//加载配置文件的键值对到Properties对象中list()//将数据显示到指定位置getProperty(key)//根据键获取值setProperty(key,value)//设置键值对到Properties对象中store()//将Properties中的键值对存储到配置文件之后,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码loadFromXML(InputStream)storeToXML(OutputStream, String, String)//方法以简单的XML格式加载和存储属性。 默认情况下,使用UTF-8字符编码,但是如果需要,可以指定特定编码。 需要实现支持UTF-8和UTF-16,并可能支持其他编码。

XML属性文档具有以下DOCTYPE声明:

Properties读取配置文件

使用Properties类来读取test.properties文件

1.创建Properties对象2.加载指定配置文件3.把键值对(k=v)显示在控制台4.根据key获取对应的value值
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Test01 {
    public static void main(String[] args) throws IOException {
        //创建Properties对象
        Properties properties = new Properties();
        //加载配置文件
        properties.load(new FileReader("E:\\Java_基础\\code\\IO流\\src\\test.properties"));
        //将内容显示在控制台
        properties.list(System.out);
        //通过key获取value
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        System.out.println("用户名:"+user);
        System.out.println("密码:"+password);
    }
}

Properties写入配置文件

使用Properties来创建配置文件并设置内容

1.创建Properties对象2.创建对应的键值对setProperty(String key,String value)3.将键值对存储到指定的配置文件中store(Writer writer, String comments)

PS:如果文件中没有key,就是创建一对键值对,如果该文件有key,就是修改该键对应的值

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class Test02 {
    public static void main(String[] args) throws IOException {
        //创建对象
        Properties properties = new Properties();
        //设置键值对
        properties.setProperty("user","root");
        properties.setProperty("password","abcdef");
        //写入到指定文件,如果没有,就创建该文件
        properties.store(new FileWriter("E:\\Java_基础\\code\\IO流\\src\\demo.properties"),null);
        //如果comments参数不为空,则首先将ASCII #字符,注释字符串和行分隔符写入输出流。 因此, comments可以作为识别评论。
        //注释行始终写入,由ASCII #组成,当前日期和时间(如当前时间Date的toString方法生成的)以及由Writer生成的行分隔Writer 。
    }
}

properties文件的读取和写入

properties文件是一种属性文件,这种文件以key=value(键值对)格式存储内容。Java中可以使用Properties类来读取这个文件,使用Properties类中的getProperties(key)方法来得到对应的数据。

一般properties文件作为一些参数的存储,使得代码更加灵活。

properties文件的读取

(1)使用BufferedInputStream(缓冲输入流)创建输入流进行读取,读取后以key=value(键值对)格式存储数据。

代码实现:

//Properties格式文件的读取
    //创建输入流
    try (
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\student\\aaa.properties"))) {
        int data =-1;
        while((data=bis.read())!=-1) {
            System.out.print((char)data);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //运行结果
    //k=12
    //b=34
    //c=11

(2)使用Properties类中的load()方法读取,将“输入流”加载到Properties集合对象中,根据key来获取value的值

代码实现:

try (
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\student\\aaa.properties"))) {
        Properties props=new Properties();
          props.load(bis);//将“输入流”加载到Properties集合对象中
               //根据key,获取value
                System.out.println(props.get("k"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //运行结果
    //12

properties文件的写入

因为properties文件数据是以集合形式存储,所以可以用put()方法将KV键值对存入Properties集合中,再通过输出流使用store()方法将集合中的临时数据,持久化写入硬盘中存储。

//properties格式文件的写入
    try{
        Properties props=new Properties();
        props.put("Q", "123");
        props.put("W", "432");
        props.put("E", "986");
        props.put("R", "457");
    //使用“输出流”,将properties集合中的KV键值对,写入*.properties文件
      try (BufferedOutputStream bos = new BufferedOutputStream(
            new FileOutputStream("D:\\student\\bbb.properties"))) {
        props.store(bos, "just do IT");
      }
    } catch (IOException e) {
        e.printStackTrace();
    }
//运行结果
//    #just do IT
//    #Wed Jun 01 00:14:57 CST 2022
//    W=432
//    R=457
//    Q=123
//    E=986

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

关键词:

 

热文推荐

全球观热点:Java如何读写Properties配置文件(Properties类)

这篇文章主要介绍了Java如何读写Properties配置文件(Properties类),具有很好的参考价值,希望对大家有所帮

2023-05-13

超百亿!景林美股集齐“爆款”:新东方、拼多多,英伟达、微软都在册

来源:华尔街见闻北京时间5月12日深夜,景林资产披露美股最新持仓明细。景林资产是管理超千亿元人民币的中

2023-05-13

2名小孩和防盗窗一起坠楼 警方回应事件简单介绍

1、5月12日,湖南益阳某小区2名小孩和防盗窗一块掉落下来,情况危急。2、13日,琼湖派出所民警表示特警已出

2023-05-13

劳资负责人是什么意思_关于劳资负责人的介绍-焦点短讯

解答:1、武汉劳资日夜管一般是指单位中负责员工工资和劳动关系的人员,是专职负责处理员工转单和员工工资

2023-05-13

全球微速讯:三国志13修改器,提供无限资金,无限单位生命值,设置人口等

三国志13加强版修改器为广大游戏玩家们量身定制的加强版游戏作弊器,通过这款游戏作弊器软件可以对三国志13

2023-05-13

世界通讯!深化“无差别一窗受理”改革的路径探索

秦丛丛滨州市委党校自2020年以来,山东省滨州市全市各级行政审批服务局全面推广“无差别一窗受理”改革,通

2023-05-13

【天天聚看点】追梦:很高兴AD预计能出战 你永远不想与缺少最佳球员的球队交手

勇士球员追梦早前在自己的播客节目中谈到湖人勇士系列赛。谈到湖人球星安东尼-戴维斯,追梦表示:“我们肯

2023-05-13

早安,地球村丨江西6个地理标志产品入选全国百强|天天观焦点

省内要闻15月12日,省红十字会、国家消防救援局机动支队五大队开展“防范灾害风险护航高质量发展”为主题的

2023-05-13

世界时讯:刘国跃会见山西焦煤集团董事长赵建泽

5月11日,国家能源集团党组书记、董事长刘国跃在集团总部会见来访的山西焦煤集团党委书记、董事长赵建泽一

2023-05-13

捉马村

1、捉马村有耕地总面积275 73亩(其中:田56 8亩,地217 93亩),人均耕地2 5亩。2、主要种植玉米等作

2023-05-13

环球关注:股票行情快报:星云股份(300648)5月12日主力资金净卖出891.00万元

截至2023年5月12日收盘,星云股份(300648)报收于31 11元,下跌2 96%,换手率2 22%,成交量2 11万手,成交额6636 41万元。

2023-05-13

22.试述公民监督的特征和意义_公民监督名词解释_天天快消息

1、公民监督是指公民通过批评、建议、申诉、控告、检举等方式对国家机关及其公职人员实施法律的一种监督。2

2023-05-12

快看:2019企业所得税税率表图片_2019企业所得税税率表

1、企业所得税:是针对企业利润征收的一种税,基本税率是33%,另有两档优惠税率18%、27%。2、应纳税所得额

2023-05-12

今日热搜:如何使用 EZ 制弓器

你需要的东西6码17 16或25 8英寸丝带EZ制弓机16英寸中号线EZBowMaker是一款旨

2023-05-12

世界观点:市区任港社区:消防演练进社区 筑牢安全“防火墙”

今天是512全国防灾减灾日,上午,市区任港街道联合孩儿巷消防救援站、任港派出所,在外滩花苑进行消防应急

2023-05-12

塞尔:劳尔想执教更高级别球队,可能在今夏离开皇马卡斯蒂亚

根据塞尔电台的报道,目前执教皇马卡斯蒂亚的劳尔可能会在今夏离任,以此找寻执教更高水平球队的机会。现年

2023-05-12

qq下载_qq魔钻

1、手机家园游戏的问友你好:以上是QQ空间智囊团(白)真诚为您解答!当然如果你感到满意的话请采纳我的回答

2023-05-12

谷歌的无密码登录现在可供用户使用 世界速递

对于所有讨厌密码的人来说,这是个好消息:谷歌已经迈出了一大步,通过添加“密码”作为登录其服务的更直接

2023-05-12

观焦点:YG新女团出道 新人女团命名为babymonster

YG新女团出道新人女团命名为babymonster

2023-05-12

SMM分析:铬矿供给紧缺持续4月先跌后涨 5月到港数量存疑矿价疯狂能否持续? 全球观察

铬矿价格4月先跌后涨,截止5月10日南非40-42%铬精粉矿均价60元 吨度。截止5月12日,铬矿全

2023-05-12

资讯

花式避暑添夏日趣味 热浪滚滚燃高温经济

防晒、遮阳、冰饮,冲冲冲!西瓜、外卖、空调,不能停!多地持续的高温天气不仅贡献了很多热搜,也助燃了夏日经济。这其中,既有人们熟悉的传

2022-08-08     
天津津门虎队教练于根伟:机会来了要冷静

天津津门虎队明天将迎来中超联赛第五轮比赛,未尝一胜的现实也让全队上下倍感压力。昨天,主教练于根伟在谈及全队问题时表示:球员们在完成

2022-06-20     
北京推出14条秋游文化线路

金秋时节,北京市文化和旅游局以赏银杏品文化为主题,推出14条“叶落的季节——漫步北京赏银杏品文化主题线路”,邀市民和游客以步行、骑行

2021-10-27     
基因编辑发力 培育高质量人源化供体猪

此次人体试验,仅仅验证了基因编辑猪克服异种器官移植的超急性排斥反应,还需解决延迟性排斥反应、消耗性血栓等问题。但通过这次试验,能更

2021-10-27     
中国经济高质量发展步伐稳健 长期向好基本面未变

在全球疫情走势和经济走势趋于复杂的背景下,中国经济巨轮将驶向何方,举世关注。2020年10月26日至29日,党的十九届五中全会在京举行,明确

2021-10-27     
南美解放者杯决赛允许近4.5万观众入场

南美洲足联主席多明格斯25日与今年解放者杯决赛对阵的两支俱乐部负责人会晤,宣布决赛现场观众人数增加到球场容量的75%,即近4 5万人。今年

2021-10-27