23-IO流-45-IO流(Properties集合的-修改配置信息)

/**
 * 【需求】现有配置信息已经存到系统文件(文件中数据为String类型的键值对)中,现在想将其读取到Properties集合中并做修改。
 * 
 * 【思路】既然需要读取文件,那么就要关联流。
 */


package demo;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class PropertiesDemo {

	public static void main(String[] args) throws IOException {

//		PropertiesDemo_1();
		myLoad();
		
	}

	public static void PropertiesDemo_1() throws FileNotFoundException,
			IOException {
		//1.新建集合
		Properties prop = new Properties();
		
		//2.集合中的数据来自于文件(注意:需要读取的数据必须为字符串键值对)
		FileInputStream fis = new FileInputStream("info.txt");
		prop.load(fis);//将info.txt中内容读取到集合prop中
		prop.list(System.out);//用list方法调试,看prop集合中是否有内容。
	}
	
	public static void myLoad() throws IOException{//模拟集合Properties中load()方法,目的在于清楚load的实现过程和原理
		
		Properties prop = new Properties();
		
		BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
		
		String line = null;
		
		while((line = bufr.readLine())!=null){
			
			if(line.startsWith("#"))
				continue;//如果该行以“#”开头,说明是注释,不需要打印,直接continue
			
			String[] str = line.split("=");//line是字符串,调用spilt方法切割,根据等号进行分割
//分割出来两部分,等号之前一部分(键),等号之后一部分(值),所以数组str中就两个元素,正好一个键一个值
			
			prop.setProperty(str[0], str[1]);
		}
		bufr.close();
	}

}

========================分割线==================================

/**
 * 【练习】对已有的配置文件中的信息进行修改。(info.txt中的wangwu=03改为wangwu=007)
 * 
 * 【思路】
 * (1)读取文件,并将文件中的键值数据存储到集合中;
 * (2)通过集合中的方法对数据进行修改;
 * (3)用流将修改后的数据存储到文件中。
 */


package demo;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class PropertiesTest {

	public static void main(String[] args) throws IOException{
		
		//读取文件(切记先健壮性判断)
		File file = new File("info.txt");
		if(!file.exists())
			file.createNewFile();
//至此,这个文件一定是存在的
		FileReader fr = new FileReader(file);//流可以直接读取文件
		
		//创建集合
		Properties prop = new Properties();
		
		//将流中信息存储到集合中
		prop.load(fr);
		
		
		prop.setProperty("wangwu", "007");//即使是createNewFile()方法新建的文件,也可以将wangwu=007写入
		
		//将集合中的信息写入文件中,需要关联流
		FileWriter fw = new FileWriter(file);
		
		prop.store(fw, "name+number");
//【注意】这里不是直接在源文件里面修改配置信息,而是新建个文件,将源文件覆盖,之后将已经在集合中修改完成的信息
//写入新文件中
		
		fw.close();
		fr.close();
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值