前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java实现:稀疏数组-文件相互转换

Java实现:稀疏数组-文件相互转换

作者头像
Fisherman渔夫
发布2019-07-31 14:53:08
4230
发布2019-07-31 14:53:08
举报
文章被收录于专栏:渔夫渔夫

版权声明: https://blog.csdn.net/li_xunhuan/article/details/91627850

代码:

代码语言:javascript
复制
	import java.io.*;
	
	public class SparseArrToMapdata {

  	  public static void main(String[] args) throws IOException {
        /***
         * 一、稀疏数组转为文件map.data 为了验证正确性,请用记事本打开此文件
         */
        //稀疏数组的给定,那简单的:1代表黑子,2代表蓝子
        int sparseArr[][] = new int [3][3];
        sparseArr[0][0] =11;
        sparseArr[0][1] =11;
        sparseArr[0][2] =2;
        sparseArr[1][0] =4;
        sparseArr[1][1] =5;
        sparseArr[1][2] =1;
        sparseArr[2][0] =7;
        sparseArr[2][1] =8;
        sparseArr[2][2] =0;
        //1.创建源
        File dest = new File("d:\\map.data");
        //2.选择流:之所以选择字符流进行操作,主要由于其比字节流分割字符相比有分割方便的方法
        Writer os = null;
        os = new FileWriter(dest);
        //3.进行数据的拷贝,其中\t,即table符号,作为数字的分隔符(主要是数字的位数在此例中是不确定的)
        for (int i = 0; i < sparseArr.length; i++) {
            for (int j = 0; j < 3; j++) {
                os.write(sparseArr[i][j]+"\t");
            }
            os.write("\r\n");
        }
        //4.释放资源
        os.close();

        /**
         * 二、将本地文件map.data转换为稀疏数组
         */

        //1.创建源
        File src = new File("d:\\map.data");
        //2.选择流
        BufferedReader in = new BufferedReader(new FileReader(src));
        //3.1进行数据的搬移,但是数组首要考虑的事情是数组要多大?
        int row =0;//用于创建要创建的二维稀疏数组的大小确定
        String line; //一行数据
        //逐行读取,并将每个数组放入到数组中
        while ((line = in.readLine()) != null) {
            row++;
        }
        int sparseArr2[][] = new int [row][3];
        //3.2文本数据转移到稀疏数组中
        int rowtmp = 0;
        //由于读取完毕整个文本文档,所以不妨”重启“流
        in.close();
        in = new BufferedReader(new FileReader(src));
        while ((line = in.readLine()) != null) {
            String[] temp = line.split("\t");
            for (int j = 0; j < temp.length; j++) {
                sparseArr2[rowtmp][j]=Integer.parseInt(temp[j]);
            }
            rowtmp++;
        }
        //4.关闭流
        in.close();
		//验证文件读取是否正确
        for(int[]temp1:sparseArr2) {
            for (int temp2 : temp1) {
                System.out.printf("%d\t", temp2);
            }
            System.out.println();
        }
    }
	}

注意事项:

  1. 对于BufferedReader类中的readLine在代码中第一次用的目的是为了得到所需要创建数组的合适大小;
  2. 遍历完文件的所有行之后,需要进行流的“重启”再次定位到文件第一行,进行遍历,即数据的读取
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码:
  • 注意事项:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档