本帖最后由 蚂蚁搬家 于 2013-5-3 17:27 编辑
代码如下:
//用Properties存取配置文件;
import java.io.*;
import java.util.*;
public class PropertiesDemo
{
public static void main(String [] args) throws IOException
{
method_2();
}
//将info.txt文件中的键值对信息存入Properties对象中?
public static void method_2() throws IOException
{
Properties prop = new Properties();
BufferedReader br = new BufferedReader(new FileReader("info.txt"));
//流中的数据加载到集合中;
prop.load(br);
//修改其中一对键值对的值;
prop.setProperty("zhangkai", "36");
BufferedWriter bw = new BufferedWriter(new FileWriter("info.txt"));
prop.store(bw, "zhushi"); //修改后的信息重新保存到配置文件中;
prop.list(System.out);
}
}
我的问题是:将 BufferedWriter bw = new BufferedWriter(new FileWriter("info.txt")) 这一行放到程序前面的输入缓冲流的建立后面时,会出现一个问题:
就是我明明只是修改了其中一对键值对的值("zhangkai", "36");。但实际的运行结果是配置文件中原有的那些键值对都没有了,都被程序中("zhangkai", "36")给覆盖了;
如果程序保持现在这个样子,运行结果就是我想要的:配置文件中原来的"zhangkai=26"被修改为“zhangkai=36”,
这是为何 啊?为什么在一开始就建立输出缓冲流,会导致配置文件被完全覆盖了?
|