java小游戏数据的TXT存取

这里我为一个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:\\workspace\\mayifan\\src\\com\\myf\\plane1102\\data.txt"); // 存放数组数据的文件
			BufferedReader in = new BufferedReader(new FileReader(file)); // 把字节转为字符,然后可以read																
			String line; // 行数据
			// 逐行读取,并将每个数据放入到数组中
			String[] temp = null;
					while ((line = in.readLine()) != null) {
						temp = line.split("\t");
						for (int j = 0; j < temp.length; j++) {
							arr2[j] = (int) Double.parseDouble(temp[j]);
						}
					}
					in.close();		            
						// 显示读出的数据
						for (int i = 0; i < temp.length; i++) {
							//System.out.print(arr2[i] + "\t");
						}			
						for (int i = 0; i < temp.length; i++) {
							if (score >= arr2[i]) {
								for (int j = temp.length - 1; j >= i; j--) {
									arr2[j + 1] = arr2[j];
								}
								arr2[i] = score;
								rank = i + 1;
								break;
							}
						}
						firstScore = arr2[0];
			FileWriter out = new FileWriter(file); // 文件写入流
			for (int i = 0; i < temp.length + 1; i++) {
				out.write(arr2[i] + "\t");
			}
			out.close();
		} catch (IOException e) {
			e.getStackTrace();
		}
	}

java小游戏数据的TXT存取_第1张图片

你可能感兴趣的:(IO流)