/* 需求: 编写程序,用于记录程序运行的次数,如果运行的次数已到,要求用户注册会员账号; 思路: 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方法,将属性信息输出到指定的输出流中,从而存入到文件中; } } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |