如何把一个数组以txt形式保存到本地磁盘以及如何取出还原
我是想模拟一个五子棋棋盘。在模拟的过程中做了如下操作。
创建一个二维数组,用来当做五子棋盘,0代表无子 1代表白子 2代表黑子。下棋后把该棋盘以稀疏数组的形式保存,最后把稀疏数组保存到本地磁盘。(稀疏数组可以节省磁盘空间。)
package com.wk.test;
import java.io.*;
/**
* @author wk
* @date 2019/10/2 15:18
*/
public class SparseArray {
public static void main(String[] args) throws IOException {
//0代表无子 1代表白子 2代表蓝子
//原始数组
int [][] arr = new int[11][11];
arr[1][2] = 1;
arr[2][3] = 2;
arr[3][4] = 2;
arr[5][7] = 1;
//稀疏数组的行数
int sum = 1;
for (int[] ints : arr) {
for (int anInt : ints) {
if (anInt != 0){
sum++;
}
}
}
//创建一个稀疏数组
int[][] sparseArr = new int[sum][3];
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = sum-1;
int count = 0;
//填入稀疏数组的值
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (arr[i][j] !=0){
count++;
sparseArr[count][0] = i;
sparseArr[count][1] = j;
sparseArr[count][2] = arr[i][j];
}
}
}
//文件的路径
String str = "d:/sparse.txt";
File file = new File(str);
//如果磁盘中该文件不存在,则创建该文件
if (!file.exists()){
file.createNewFile();
}
//创建字符写入流对象
FileWriter fileWriter = new FileWriter(str);
for (int i = 0; i < sparseArr.length; i++) {
for (int j = 0; j < sparseArr[i].length; j++) {
//写入每个字符
fileWriter.write(sparseArr[i][j]);
}
}
//关闭写入流
fileWriter.close();
System.out.println("写入完毕");
//创建新的数组,来接收读取的数据
int [][] sparseArr2 = new int[sum][3];
FileReader fileReader = new FileReader(str);
for (int i = 0; i < sparseArr2.length; i++) {
for (int j = 0; j < sparseArr[i].length; j++) {
//把读取的数据设置到数组中
sparseArr2[i][j] = fileReader.read();
}
}
//关闭读取流
fileReader.close();
}
}