//将一个文件中的键值对信息存入到Properties集合中,并且将集合中修改好后的数据再次存入文件中
import java.util.*;
import java.io.*;
class PropertiesDemo1
{
public static void main(String[] args) throws IOException
{
Properties p=new Properties();
FileInputStream fis=new FileInputStream("e:"+File.separator+"11.txt");//创建一个输入刘传入load()
==================================================================
p.load(fis);
p.setProperty("stu1","111");
FileOutputStream fos=new FileOutputStream("e:"+File.separator+"11.txt");
p.store(fos,"");
System.out.println(p);
}
}11.txt文件中 本来就有  
stu1=111
stu2=222
stu3=333
我现在是想改成stu1=555
上面的代码是可以实现的,但是
FileOutputStream fos=new FileOutputStream("e:"+File.separator+"11.txt");放到======这行就不行了,是为什么?而且将这行放到======这行,11.txt中的数据也会清除。

解决方案 »

  1.   

    new FileOutputStream("e:"+File.separator+"11.txt");相当于在e盘下新建了一个11.txt  自然原来的就被覆盖了 就跟手动在磁盘里新建了一个空的11.txt一样 名字重复了会覆盖p.load(fis);
    会把目标文件载入内存  所以在这条之后调用没关系
      

  2.   

    FileOutputStream的构造函数如果只是传递一个File对象,那么默认是新创建一个file的,如果想不新建那么需要加一个boolean参数,表示追加,若这样的话又不符合你的初衷了
    FileOutputStream(File file)//默认是false
    FileOutputStream(File file, boolean flag)//若为true表示追加
      

  3.   

    小弟只想知道FileOutputStream fos=new FileOutputStream("e:"+File.separator+"11.txt");放在下边和放在===============================这行的区别是啥