黑马程序员技术交流社区
标题:
properties存取练习发现的一个细节
[打印本页]
作者:
丰亚彬
时间:
2012-6-6 17:12
标题:
properties存取练习发现的一个细节
在重新复习写到这个练习题的时候,发现了一个容易出错的,地方拿出来和大家分享一下
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,刚开始我也迷惑,后来想起来了,输出流会覆盖你原来的文件,所以每次都是一个新的文件,里面的内容都覆盖了
不知道有没有朋友有办法可以避免这样的问题?
作者:
罗文杰
时间:
2012-6-6 17:22
{:3_50:}我上午写的时候也犯了这个错误,一直是1,= =~~
作者:
伊文龙
时间:
2012-6-6 18:01
刚刚在楼主另一个相同的帖子上看到这个问题。
看到 你的问题和你代码中这一句FileOutputStream fos = new FileOutputStream(file)
然后我认为是 FileOutputStream fos = new FileOutputStream(file,true);才对,
后来一看是Properties的问题,以为自己回答的草率了,又试着运行了下
结果问题还是在那里~把输出流改成可添加就可以了
FileOutputStream fos = new FileOutputStream(file,true);
作者:
伊文龙
时间:
2012-6-6 18:04
我的运行三次的结果:
#
#Wed Jun 06 17:51:48 CST 2012
count=1
#
#Wed Jun 06 17:56:34 CST 2012
count=2
#
#Wed Jun 06 17:56:38 CST 2012
count=3
未count.jpg
(32.42 KB, 下载次数: 20)
下载附件
2012-6-6 18:03 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2