在重新复习写到这个练习题的时候,发现了一个容易出错的,地方拿出来和大家分享一下- import java.util.*;
- import java.io.*;
- class PropertiesDemo1
- {
- public static void main(String[] args) throws IOException
- {
- //判断文件是否存在。不存在就创建
- File file = new File("count.ini");
- if(!file.exists())
- file.createNewFile();
-
- //对象初始化
- Properties prop = new Properties();
- FileInputStream fis = new FileInputStream(file);
- FileOutputStream fos = new FileOutputStream(file);
- //将键值对存到properties中并且处理
- prop.load(fis);
- int count = 0;
- String value = prop.getProperty("count");
- if(value!=null)
- {
- count = Integer.parseInt(value);
- if(count>3)
- {
- System.out.println("time over");
- return;
- }
- }
- count++;
- prop.setProperty("count",count+"");
- //这里的输出流要写到这里才能运行正确,写到上面就错了
- //FileOutputStream fos = new FileOutputStream(file);
- prop.store(fos,"");
- fis.close();
- fos.close();
- }
- }
复制代码 一般我们都喜欢先把对象定义出来,但是那个输出流如果在开始定义了,那么你里面的值就一直都是空的,所以每次运行完都只是1,刚开始我也迷惑,后来想起来了,输出流会覆盖你原来的文件,所以每次都是一个新的文件,里面的内容都覆盖了
不知道有没有朋友有办法可以避免这样的问题? |