/*
需求:
编写程序,用于记录程序运行的次数,如果运行的次数已到,要求用户注册会员账号;
思路:
1.根据题目需求,很容易想到计数器,可是如果计数器定义在程序中,那么该计数器会随着应用程序的退出,而从计算机内存中消失;
2.要想使程序结束,计数器的值也存在,程序启动时,先加载该计数器的值,然后加1在存储起来这就要求建立一个配置文件,专门用
于存放记录该软件运行次数的计数器;
3.配置文件最好使用键值对,这样便于阅读,并操作数据;
4.键值对数据时存放在map集合中,数据是以文件形式存储,会使用io技术,io+map-->Properties,这样配置文件既可以共享,又方便操作;
*/
import java.io.*;
import java.util.*;
class RunCountDemo
{
public static void main(String[] args) throws IOException
{
runCount();
}
public static void runCount() throws IOException
{
Properties prop=new Properties();
//建立一个Properties集合,用于临时存放关于程序运行次数的属性信息;
File f=new File("F:\\JAVAWORK\\day20\\runInfo.ini");
//声明一个File对象,指向"F:\\JAVAWORK\\day20\\runInfo.ini";
//BufferedWriter bufw=new BufferedWriter(new FileWriter(f));
//一开始这句废代码往删了,导致49行(下方的红色字体部分)的代码好像就能读一次,在运行的时候,就发现无论程序运行多少次,"F:\\JAVAWORK\\day20\\runInfo.ini"里的文件都不在更新,这是
//怎么回事啊,???
if (!f.exists())
//判断File对象f指向的文件是否存在;
{
f.createNewFile();
//如果不存在,中创立一个;
}
FileInputStream fis=new FileInputStream(f);
//把f对象关联到输入流中;
prop.load(fis);
//通过Properties对象自带的方法load(),从输入流中读取属性信息;
int count=0;
//定义一个计数器,初始值为0;
String value=prop.getProperty("time");
//通过键"time",获取相对应的值;
if (value!=null)
{
count=Integer.parseInt(value);
if (count>=5)
{
System.out.println("您的试用期限已到,请开通会员!");
return;
}
}
count++;
prop.setProperty("time",count+"");
//把相应的键值对存入到Properties集合中;
prop.list(new PrintStream(f));
//通过list方法,将属性信息输出到指定的输出流中,从而存入到文件中;
}
}
问题在第一处红色字体处;
|