使用java模拟记录软件试用次数问题之前,先对I/O流提供的RandomAccessFile类进行简单的了解!
在前面几节介绍的I/O流之中,他们都有一个共同的特点就是对读取设备数据只能按照数据的先后顺序来,但是在实际的开发过程是想对文件进行随意的操作,但是字节流与字符流都不能操作。
因此,I/O流提供了RandomAccessFile这个类,它不属于流,但是具有读写数据的功能,可以随机从文件的任何位置开始执行读写数据的操作!
下面一起看看RandomAccessFile类的常用构造方法:参数mode有4个值,含义分别如下:1.r:表示只读的方式打开文件;
2.rw:表示以“读写”的方式打开文件;如果该文件不存在,则自动创建文件。
3.rws:表示以读写方式打开文件;与“rw”相比,要求对文件的内容或元数据的每个更新都同步写入到底层的存储设备。
4.rwd:表示以“读写”的方式打开文件;与“rw”相比,要求对文件的内容的每个更新都同步写入到底层的存储设备。
RandomAccessFile在实际开发的过程之中也常见,比如,有一些软件在使用时需要付费,但是一般来说都有几次免费试用的机会。接下来使用RandomAccessFile类来模拟实现记录软件试用次数的过程。
在编写该程序时,首先得在自己的目录下创建一个文本文件copy2.txt,在该文本中输入数字5作为软件的试用次数,来进行演示模拟记录软件试用次数。代码如下:
import Java.io.;/*********************************** 项目:随机读取设备中的数据 方法:RandomAccessFile\seek\write\ 时间:2021.2.3 *************************************/public class RandomAFileTemp { public static void main(String[] args) throws Exception { //创建RandomAFileTemp 对象,并以读写模式打开copy.txt文件 RandomAccessFile raf= new RandomAccessFile(“C:\Users\asus\Desktop\copy2.txt”,“rw”); //读取还可以使用的次数为,第一次读取时times为5
int times=Integer.parseInt(raf.readLine())-1; //判断剩余的次数 if(times>0) { //每执行一次表示使用一次,次数就会减少一次 System.out.println(“您还可以试用:”+times+“次!”); //将记录指针重新指向文件开头raf.seek(0); //将剩余次数再次写入文件
raf.write((times+"").getBytes()); }else { System.out.println(“试用次数已经用完!”); } //关闭这个随机存取文件流并释放任何系统 raf.close(); }}
输出结果:试用次数已经用完!
上述结果表明,运行该代码五次了,也就是免费使用的机会已经用完了。所以,没运行一次,就少一次使用机会,相当于一个软件的免费使用时间为20天,没过一天免费使用的时间就少一天。
同时,与我们输入密码一样,你有三次机会输入密码,当超过连续三次都数不对,卡就会被吞!
编程永远是一个实战的过程,需要自己不断的去练习、实践。