这里我为一个java小游戏“飞机大战”添加一个数据的存取,存取的对象是txt文档。要实现的是:当游戏结束的时候,屏幕上弹出提示窗口,显示本局得分,历史最高分,排名这些信息。需要历史排名自然需要历史数据,txt文档是保存数据简单可行的一种方法,下面我们来具体介绍如何把txt内的数据取出并存到数组,对数组进行分析处理后再存回txt文档。
BufferedReader的使用
我们使用IO流来存取数据,需要用到BufferedReader这个类,我们来看一下API:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。对象的创建:BufferedReader in= new BufferedReader(new FileReader(file));
其常用方法是:read() 读单字符和readLine()读行。这里值得一提的是readLine()是一种阻塞方法,如果没有读到数据,程序就会阻塞在此处。此处我们有必要介绍一下InputStream 、InputStreamReader 、BufferedReader的区别和使用,以便更好地理解io流。InputStream 是字节输入流的所有类的超类,InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流,而BufferedReader由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行。我们需要读取的是txt文本行,读字符串,故我们采用BufferedReader的readLine()方法。
代码实现文本数据与数组的转化
1、确定txt文件的路径,我们一般在包内手动创建一个txt即可。
2、字符流输入(可以理解为在java和txt间建立了一个通道)。
3、读字符串,spilt分割为字符串数组。
4、逐个转化为int数据存入数组。
5、数组数据分析和处理(此处我判断排名并把本次游戏分数插入到数组合适的位置)。
6、把数组中的数据写入文件。
7、io流需要抛出异常。
public void InPut() {
int[] arr2 = new int[n];
try {
File file = new File("E:\\worksp