黑马程序员技术交流社区
标题:
用配置文件记录应用的使用次数
[打印本页]
作者:
qq8921310
时间:
2014-11-2 22:15
标题:
用配置文件记录应用的使用次数
Properties pro = new Properties();
File file = new File("E:\\java11\\test\\info.ini");
FileInputStream is = new FileInputStream(file);
FileOutputStream os = new FileOutputStream(file);
if (!file.exists())
{
file.createNewFile();
os.write("value=0".getBytes());
os.flush();
}
pro.load(is);
int count =1;
String value = pro.getProperty("value");
//if(value!=null)
//{
count = Integer.parseInt(value);
if ( count>3)
{
System.out.println("使用次数已到,请立刻充值");
return ;
}
//}
count++;
pro.setProperty("value",count+"");
pro.store(os,"haha");
}
复制代码
问题:1 //if(value!=null)的时候 会提示null。我前面已经创建了为什么还会提示空
问题:2 当添加上if(value!=null)时 编译可以成功,但是功能不能实现,哪里的逻辑出了问题。
注:这不是视频里的原代码。是自己理解写的。可能有点乱。
作者:
qq8921310
时间:
2014-11-2 22:21
现在知道是第八行 有问题,但是不知道为什么会影响这么大。
作者:
李天富
时间:
2014-11-2 23:23
在新建FileOutputStream对象时会自动创建文件,也就是说file.exsits()已经为true了,所以,你的第一个if语句中的内容一定不会执行,也就是"value=0"没有被写入文件,所以下面的value是null。
作者:
Kikyou2014
时间:
2014-11-3 01:42
FileOutputStream对象的创建,一定要等到数据读取到Properties对象中后,因为一旦输出流关联文件,会重写数据。这个代码就是数据在外存与内存间转移
作者:
戏言丶
时间:
2014-11-3 01:58
将os.write("value=0".getBytes());os.flush();移出括号外,new 一个FileOutputStream对象的时候会自动创建一个File文件,所以你放在括号中并不好执行,也就是没有把数据写入配置文件中,所以会出现null的现象
作者:
inception
时间:
2014-11-3 02:01
本帖最后由 inception 于 2014-11-3 02:10 编辑
想错了,应该是覆盖的问题吧
作者:
qq8921310
时间:
2014-11-3 21:30
李天富 发表于 2014-11-2 23:23
在新建FileOutputStream对象时会自动创建文件,也就是说file.exsits()已经为true了,所以,你的第一个if语 ...
明白了。,3Q
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2