黑马程序员技术交流社区
标题:
统计程序使用次数遇到的问题
[打印本页]
作者:
Jaybor
时间:
2015-4-4 12:03
标题:
统计程序使用次数遇到的问题
本帖最后由 Jaybor 于 2015-4-4 12:06 编辑
毕老师的一个视频,里面讲的是统计程序运行次数,当次数超过一定值后就禁止程序的运行:
import java.io.*;
import java.util.Properties;
public class IOTest
{
public static void main(String[] args) throws Exception
{
Properties pro=new Properties();
File f=new File("c:/logging.txt");
if(!f.exists())
f.createNewFile();
FileInputStream input=new FileInputStream(f);
//PrintStream ps=new PrintStream(f);A
pro.load(input);
PrintStream ps=new PrintStream(f)//B
int count=0;
String value=pro.getProperty("time");
if(value!=null)
{
count=Integer.parseInt(value);
if(count>=5)
{
System.out.println("付钱吧,骚年");
return;
}
}
count++;
pro.setProperty("time", count+"");
//PrintStream ps=new PrintStream(f);C
pro.store(ps,"");
ps.close();
input.close();
}
}
复制代码
然后问题来了:输出流在A、B、C三个位置上居然有不同的效果,有大神指导下这是为什么吗?
作者:
z47057554
时间:
2015-4-4 14:40
本帖最后由 z47057554 于 2015-4-4 14:43 编辑
我测试了一下程序,根据测试结果我说下自己的看法:
结果:
A处:文件中刚开始没有数据,之后无效运行多少次文件中 time=1
B处:文件能正常写入次数,但到达5次后文件中会没有内容,程序自动重新开始计数
C处:正常计数
原因:
首先说下B和C,它们不同是因为当count都达到5时,再次运行程序的时候,在结束之前若B处存在,则将ps与文件关联,而它关联的方式是创建新文件,也意味着,文件中的内容变成了跟刚开始一样,是null,所以循环重新开始,而C处正常是因为在count达到5后,程序执行不到创建ps,所以文件不会被清空。
接下来说下,A处结果的原因:上面已经说到创建ps关联文件时会把文件清空,ps在load之前创建,那么每次load的内容,加载进内存的都为空值,所以count只会在0和1间转,不可能达到程序次数结束条件
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2