Java中如何读取和写入properties文件

2023-11-04

 properties文件是一种属性文件,这种文件以key=value格式存储内容。Java中可以使用Properties类来读取这个文件,一般properties文件作为一些参数的存储,使得代码更加灵活。
这里先定义一个data.properties文件,内容如下:

cn=12
kr=14
jp=64

既然properties是一个文件,那么我们也可以用FileInputStreram来进行读取:

	try (BufferedInputStream bis = new BufferedInputStream(new  FileInputStream("D:\\test\\data.properties"))) {
		int data = -1;
		while((data = bis.read()) != -1) {
			System.out.print((char)data);
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
		
    运行结果
    // cn=12
    // kr=14
    // jp=64

但是,由于properties文件中每一行都是独立的键值对,这种普通读取方式并没有按照键值对的方式进行读取,而是逐个字节读取,对于这种文件来讲是没有意义的。

所以就应该使用Properties类来进行读取,从jdk源码中可以看出,Properties继承自Hashtable,因此,Properties也同样有put和get方法,由于,properties是一个文件,Properties类提供了一个load()方法,InputStram作为数据源,传入一个输入流,把输入流中的内容传入到内部的key和value中,然后就能读取到properties文件中的内容了。代码如下:

	// Properties格式文件的写入
    try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test\\data.properties"))) {
		Properties props = new Properties();
			
		props.load(bis); // 将“输入流”加载至Properties集合对象中
			
		// 根据key,获取value
		System.out.println("cn");
			
	} catch (IOException e) {
		e.printStackTrace();
	}

    // 运行结果
    // cn=12

同样,在写properties文件时,Properties类也提供了store()方法,OutputStream和String类型的注释作为数据源,将内部的键值对集合和注释传入到输出流中,就可以进行写入操作了。代码如下:

	// Properties格式文件的写入
	try {
		Properties props = new Properties();
		props.put("F1", "2314");
		props.put("F2", "2341");
		props.put("F3", "5322");
		props.put("F4", "4316");
			
		// 使用“输出流”,将Properties集合中的KV键值对,写入*.properties文件
		try(BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\test\\demo.properties"))){
			props.store(bos, "just do IT");
		}
	} catch (IOException e) {
		e.printStackTrace();
	}

可以看到,demo.properties文件已经被创建出来了,内容包括注释、创建时间和每对键值对 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中如何读取和写入properties文件 的相关文章

随机推荐

  • 【2023知乎爬虫】批量获取问题的全部回答

    一 需求 爬取任意问题下的所有回答 如下图 1 根据问题 批量获取问题下的所有回答 与对应问题的关系到answer csv文件 2 保存当前问题基本信息到quesiton info csv文件 二 展示爬取结果 三 讲解步骤 3 1 新建项
  • 《动手学深度学习 Pytorch版》 4.4 模型选择、欠拟合和过拟合

    4 4 1 训练误差和泛化误差 整节理论 详见书本 4 4 2 模型选择 整节理论 详见书本 4 4 3 欠拟合还是过拟合 整节理论 详见书本 4 4 4 多项回归 import math import numpy as np import
  • 表格嵌套表格数据

    表格嵌套表格数据 通常我们做联表查询 为了接收返回的数据我们往往需要书写一个类 这个类包含着接收两张表的数据字段 如下图 这是一种写法 但是如果面对一张表里的字段太多 那就得一个个去将这些字段写进类里 这种写法还可能让你的代码看上去比较繁杂
  • 手把手教你搭建ROS阿克曼转向小车之(霍尔编码器数据读取与速度计算)

    上一篇文章已经介绍了如何驱动直流有刷电机转动起来 这篇文章讲解如何获取编码器的计数值 并且计算出速度信息 在实际的运行中 随着机器的重量不一样 电机受到的阻力就会不一样 给定同样的PWM在不同载重的情况下速度会不一样 要解决这个问题就需要引
  • RFID自助借还书机给图书馆带来的优势

    自助借还书机系统是智慧图书馆的主要组成部分 自助借还书机系统主要通过对粘贴有电子标签或条形码的图书进行扫描识别 将其信息反馈到自助借还书机系统当中进行处理 自动完成借阅与归还 自助借还书机的操作页面简洁 用户操作快捷方便 而且其硬件设备简洁
  • 李沐大神动手学深度学习——学习笔记(不定期连载)

    最近在看李沐大佬的动手学深度学习 讲的非常基础 从很基础的开始讲 很易懂 这里记一些在之前没碰到过的在他代码里出现过的写法 and一些问题 当做学习记录 不定期连载更新 简单的目录 前12集 1 torch的tensor高级索引用法 2 p
  • 《machine learning》3线性代数

    3 1 矩阵和向量 矩阵Matrix Recrangular array of numbers R 4 2 R 4 2 R4 2 4行2列矩阵 矩阵的项
  • 开源api_开源IP地理位置API

    开源api Geo location is the identification or estimation of the real world geographic location of an Internet connected co
  • 解决falcon不能注册的问题

    参照
  • 导出开发板根文件系统rootfs

    环境 1 Windows子系统Linux Ubuntu18 没有安装子系统的 虚拟机也是一样 需要注意的是Windows子系统Linux Ubuntu18需要是WSL2版本 2 开发板RK3288 安装SSH 并允许root登录 3 开发板
  • Week 3 Git&Github: create a branch and push it to remote

    本节讲 在本地仓库创建分支之后 怎么同步到远程仓库 用到的命令有 git checkout b newbranch 创建并跳转到新的分支 git commit a m 提交更改 git push u origin newbranch 向远程
  • 【案例】航班准点分析

    文章目录 1 数据集 2 数据探索和清洗 3 起飞以及到达延迟情况 4 数据库样式 1 数据集 数据集为美国各州机场的航班信息 包含出发地 目的地 是否出发延迟15分钟 是否到达延迟15分钟等 https www transtats bts
  • 请你设计一个可以解释字符串 command 的 Goal 解析器

    1678 设计 Goal 解析器 请你设计一个可以解释字符串 command 的 Goal 解析器 command 由 G 和 或 al 按某种顺序组成 Goal 解析器会将 G 解释为字符串 G 解释为字符串 o al 解释为字符串 al
  • kaggle数据科学从业者分析报告

    数据科学从业者调查python语言分析 数据描述 2017年8月26日 全球最大的数据科学社群Kaggle发布了数据科学 机器学习业界现状全行业调查的数据集 调查问卷数据从2017年8月7日 8月25日收集 受访者囊括了来自50多个国家的1
  • H.264 入门篇 - 11 (帧间预测 - DPB 管理策略)

    DPB 对解码图像的存储有个策略 更倾向于存储对后面编码有用的图像 也就是参考图像 虽然说 DPB 中也可以存储非参考图像 在DPB没满的时候 会无差别地把参考图像与非参考图像一并插入DPB中 但是一旦DPB满了之后 如果新重建的图像为参考
  • 计算1-1/2+1/3-1/4+...-1/100的几种算法总结

    计算1 1 2 1 3 1 4 1 100 int main 法一 double n 1 double sub 0 double trem 0 double q 1 for n 1 n lt 101 n trem q 1 0 n sub s
  • 2021较全 腾讯云服务器安装宝塔面板建网站全过程(图文教程)

    2021最全 腾讯云服务器安装宝塔面板建网站全过程 图文教程 1 购买 首先 咱们在安装宝塔面板之前 我们需要先有一个服务器 可以访问这里 专业的公司 或者不差钱的推荐点腾讯云主页 这是云服务器CVM 点这里链接 或者 轻量级服务器 点这个
  • ELK+Filebeat日志分析系统

    目录 一 ELK基本介绍 1 ELK是什么 2 组件简介 2 1 ELK组件介绍 2 2 ELFK组件介绍 2 3 其它组件 4 使用ELK的原因 5 完整日志系统的基本特征 二 Elasticsearch的介绍 三 Logstash的介绍
  • osg示例解析之osganimationmorph(1)

    本课主要演示了osgAnimation中的变形动画 变形动画通常也称为逐顶点动画 Per vertex Animation 是一种三维动画的表现形式 它对计算机的运算资源的消耗很大 通常以每帧计算和应用4000 9000个顶点的位置变化为宜
  • Java中如何读取和写入properties文件

    properties文件是一种属性文件 这种文件以key value格式存储内容 Java中可以使用Properties类来读取这个文件 一般properties文件作为一些参数的存储 使得代码更加灵活 这里先定义一个data proper