IO流之FileWriter小事项

FileWriter是用来用来写入字符文件的类,默认会覆盖之前已经存在的文件。

我们现在有一个小需求,就是将一个配置文件中的值替换掉,该怎么做呢?

思路是用map中的Properties的laod方法获取文件中的键值对,然后用setProperties方法替换键对应的值,最后用store方法写入文件。

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

import java.io.File;

class test 
{
    public static void main(String[] args) throws IOException 
    {
        change("老龟","无限");
        
    }
    public static void change(String key,String value) throws IOException
    {
        Properties pro=new Properties();
        File file=new File("C:\\Users\\fan\\Desktop\\demo.txt");
        
        FileReader fr=new FileReader(file);
        FileWriter fw=new FileWriter(file);
        
        pro.load(fr);
        pro.setProperty(key,value);    
        pro.store(fw,"change");

        fr.close();
        fw.close();
        
    }
}

如果按上面的执行,原文件又没有备份的话,你估计就得崩溃了。因为fileWriter会默认覆盖文件,导致的结果就是文件被清空了。那要怎么做呢,很简单,在输入流后面紧跟着就把文件中的键值对存到properties中,这样,实例化fileWriter之后可以把properties中的数据再写入文本,代码做如下改动即可

 

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

import java.io.File;

class test 
{
    public static void main(String[] args) throws IOException 
    {
        change("老龟","无限");
        
    }
    public static void change(String key,String value) throws IOException
    {
        Properties pro=new Properties();
        File file=new File("C:\\Users\\fan\\Desktop\\demo.txt");
        
        FileReader fr=new FileReader(file);
        pro.load(fr);
        FileWriter fw=new FileWriter(file);
        
        pro.setProperty(key,value);    
        pro.store(fw,"change");

        fr.close();
        fw.close();
        
    }
}

 

posted on 2018-06-01 12:15  yfyfyf947  阅读(122)  评论(0编辑  收藏  举报