黑马程序员技术交流社区
标题:
代码疑问
[打印本页]
作者:
ㄗ灬Night|K
时间:
2013-10-18 13:18
标题:
代码疑问
本帖最后由 ㄗ灬Night|K 于 2013-10-18 17:51 编辑
为什么将36行的代码放在24行,运行的结果会不一样呢?
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
/*
用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。
*/
public class PropertiesTest2 {
public static void main(String[] args)throws Exception {
Properties prop = new Properties();
File file = new File("d:\\time.ini");
if(!file.exists())
file.createNewFile();
FileInputStream fis = new FileInputStream(file);
prop.load(fis);
//FileOutputStream fos = new FileOutputStream(file);
int count=0;
String value = prop.getProperty("time");
if(value!=null){
count=Integer.parseInt(value);
if(count>=3){
System.out.println("使用次数已到");
return;
}
}
count++;
prop.setProperty("time", count+"");
FileOutputStream fos = new FileOutputStream(file);
prop.store(fos, null);
fis.close();
fos.close();
}
}
复制代码
作者:
斗胆潇洒
时间:
2013-10-18 14:07
本帖最后由 斗胆潇洒 于 2013-10-18 14:10 编辑
FileOutputStream fos = new FileOutputStream(file);
执行这句话时,若文件存在,会将文件清空,
放在24行
,当3次执行程序后,再次执行,先执行24行的该语句,文件清空,
进入判断,大于3次,遇ruturn返回,没有执行后面的
prop.setProperty("time", count+"");
prop.store(fos, null);
语句,即文件没有写入东西,所以执行第4次时文件内容为空。
放在36行
,第4次执行时,在执行
FileOutputStream fos = new FileOutputStream(file);
之前,就遇return返回了,未进行文件的清空操作,所以文件内容依旧还在,即time=3
作者:
ㄗ灬Night|K
时间:
2013-10-18 17:51
斗胆潇洒 发表于 2013-10-18 14:07
FileOutputStream fos = new FileOutputStream(file);
执行这句话时,若文件存在,会将文件清空,
3Q :) !!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2