Java实现读取和写入properties文件

 更新时间:2023年08月14日 14:49:42   作者:仙草不加料  
这篇文章主要介绍了Java实现读取和写入properties文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java读取和写入properties文件

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文件已经被创建出来了,内容包括注释、创建时间和每对键值对 。

Java读写properties文件(java.util.Properties)

Java对于properties文件的读写可以说是最简单的一个读取、写入配置文件的方法了,在properties文件中,数据是用类似于键值对的存储方式进行存储的。

下面就是一个简单的properties文件:

username=xm99
password=1234567

没错,就是这么简单的方式。

那么我们想要对properties文件进行操作的时候应该如何操作呢?

  • 生成一个properties对象
  • 使用properties对象的 String name = p.getProperty("valueName"); 方法获得配置的值
  • 使用properties对象的 setProperty(String key,String value) 方法在配置文件中增加配置信息。之后使用 store() 方法进行保存
  • 关闭输入流/输出流对象

写入配置文件代码实例

package proTest;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class proSavaTest {
    public static void main(String[] args) throws IOException {
        FileOutputStream out = new FileOutputStream("D:\\demo\\javaBase\\src\\proTest\\pro.properties");
        Properties pro = new Properties();
        pro.setProperty("username","xm99");
        pro.setProperty("passwd","12345");
        pro.store(out,"acb");
    }
}

读取配置文件示例

package proTest;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class proTest {
    public static void main(String[] args) throws IOException {
        FileInputStream in = new FileInputStream("D:\\demo\\javaBase\\src\\proTest\\pro.properties");
        Properties pro = new Properties();
        pro.load(in);
        String username = pro.getProperty("username");
        String passwd = pro.getProperty("passwd");
        System.out.println("username="+username);
        System.out.println("passwd="+passwd);
        in.close();
    }
}

总结

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

相关文章

  • 新手了解java 反射基础知识

    新手了解java 反射基础知识

    这篇文章主要介绍了Java反射机制的相关内容,涉及了class类的动态加载,获取成员变量、构造函数信息等信息,需要的朋友可以参考下,希望对你有所帮助
    2021-07-07
  • 详解Java中使用externds关键字继承类的用法

    详解Java中使用externds关键字继承类的用法

    子类使用extends继承父类是Java面向对象编程中的基础知识,这里我们就来详解Java中使用externds关键字继承类的用法,需要的朋友可以参考下
    2016-07-07
  • 创建首个 Spring Boot 登录项目的全攻略

    创建首个 Spring Boot 登录项目的全攻略

    在Java Web开发中,登录功能是最基础也是最重要的模块之一,本文将手把手带你使用IntelliJ IDEA和Maven构建一个基于Spring Boot的简单登录系统,感兴趣的朋友跟随小编一起看看吧
    2025-06-06
  • Spring Boot + MyBatisPlus快速实现单表CRUD的示例

    Spring Boot + MyBatisPlus快速实现单表CRUD的示例

    本文主要介绍了Spring Boot + MyBatisPlus快速实现单表CRUD的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-06-06
  • java随机抽取指定范围内不重复的n个数

    java随机抽取指定范围内不重复的n个数

    这篇文章主要为大家详细介绍了java随机抽取指定范围内不重复的n个数,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 超详细讲解Java秒杀项目登陆模块的实现

    超详细讲解Java秒杀项目登陆模块的实现

    这是一个主要使用java开发的秒杀系统,项目比较大,所以本篇只实现了登陆模块,代码非常详尽,感兴趣的朋友快来看看
    2022-03-03
  • win7 64位系统JDK安装配置环境变量教程

    win7 64位系统JDK安装配置环境变量教程

    这篇文章主要为大家详细介绍了win7 64位系统JDK安装配置环境变量教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Struts2学习教程之自定义类型转换器的方法

    Struts2学习教程之自定义类型转换器的方法

    类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换。下面这篇文章主要给大家介绍了关于Struts2学习教程之自定义类型转换器的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • Java NIO写大文件对比(win7和mac)

    Java NIO写大文件对比(win7和mac)

    这篇文章主要介绍了Java NIO写大文件对比(win7和mac),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 解决IDEA使用maven创建Web项目,出现500错误的问题

    解决IDEA使用maven创建Web项目,出现500错误的问题

    本文主要介绍了在使用Maven创建项目并导入依赖写完测试代码后运行出现500错误的解决步骤,这种问题的根本原因是Tomcat启动后缺少某些支持的jar包,导致运行出错,解决方法是在项目结构中找到Artifacts,点击要编辑的项目
    2024-10-10

最新评论