java.util.Properties类

本文介绍如何使用Java操作.properties和.xml两种配置文件。包括如何读取.properties文件中的属性、如何写入新的.properties文件、如何生成及读取.xml配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、功能:读取项目中配置文件  or 为项目中的配置文件填充内容。实质,就是对properties这类配置文件的映射。这类配置文件的支持类型包括2类:.properties文件和xml文件类型。


以下代码都有一个公认的前提:配置文件我放在/Users/cxh/IdeaProjects/JavaBaseTest/src/bin文件夹下;

测试java代码放在/Users/cxh/IdeaProjects/JavaBaseTest/src文件夹下;



2、.propertise配置文件

2.1、读取

2.1.1、现在sample.propertise文件中手动写入代码:

password=12345

id=cxh

2.1.2、然后读取代码:

import java.io.FileInputStream;
import java.util.Properties;

/**
 * Created by cxh  on 17/07/21.
 */
public class Main {
    public static void main(String[] args) throws Exception {
        Properties prop=new Properties();
        FileInputStream fis=new FileInputStream("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/sample.properties");
        prop.load(fis);
        prop.list(System.out);
        System.out.println();
        System.out.println("The property is : "+prop.getProperty("id"));
    }
}

测试结果:

-- listing properties --
password=123456
id=cxh

The  property is : cxh

Process finished with exit code 0


2.2、写入

2.2.1、通过代码向未创建的新文件printStream.properties写入配置信息。

import java.io.IOException;
import java.io.PrintStream;
import java.util.Properties;

/**
 * Created by cxh  on 17/07/21.
 */
public class Main {
    public static void main(String[] args)  {
        Properties p=new Properties();
        p.setProperty("username","cxh1005");
        p.setProperty("sex","女");
        p.setProperty("schoolNum","201609080");
        try{
            PrintStream fw=new PrintStream("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/printStream.properties");
            p.list(fw);//将内存中内容写入到fw的目录文件中
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

结果:

在bin文件夹下生成文件:printStream.properties,里面包含内容:

-- listing properties --
schoolNum=201609080
sex=女
username=cxh1005

那,我们会发现,生产文件中的内容顺序和我们设定的不一样。因为Properties类实现类map接口,它是用key-value存储数据的,数据也是没有顺序保证的。


3、.xml文件

3.1、写入

3.1.1、手动写入配置信息:

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Properties;

/**
 * Created by cxh  on 17/07/21.
 */
public class Main {
    public static void main(String[] args)  {
        Properties p=new Properties();
        p.setProperty("IP","127.0.0.1");
        p.setProperty("Mac","98:73:41:ac:0f:c2");
        try{
            PrintStream ps=new PrintStream(new File("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/printStreams.xml"));
            p.storeToXML(ps,"testPrintToXMLFile");
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}

测试结果:

bin目录下生成文件:printStream.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>testPrintToXMLFile</comment>
<entry key="Mac">98:73:41:ac:0f:c2</entry>
<entry key="IP">127.0.0.1</entry>
</properties>


3.2、读取.xml文件里面的内容

3.2.1、手动生成文件readSteam.xml文件,然后写入内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>testPrintReadFromXMLFile</comment>
    <entry key="Mac">98:73:41:ac:0f:c2</entry>
    <entry key="IP">127.0.0.1</entry>
</properties>

3.2.2、读取readSteam.xml文件里面的内容:

import java.io.FileInputStream;
import java.util.Properties;

/**
 * Created by cxh  on 17/07/21.
 */
public class Main {
    public static void main(String[] args)  throws  Exception{
        Properties p=new Properties();
        FileInputStream fis=new FileInputStream("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/readStream.xml");
        p.loadFromXML(fis);
        p.list(System.out);
        System.out.println();  //空行
        System.out.println("the Mac property is :"+p.getProperty("Mac"));
    }
}

输出内容:

-- listing properties --
Mac=98:73:41:ac:0f:c2
IP=127.0.0.1

the Mac property is :98:73:41:ac:0f:c2

Process finished with exit code 0




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值