如何把一个数组以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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了