java中如何通过IO流将稀疏数组写入磁盘和从磁盘中读取,整行存,整行取
intchessArr1[][]=newint[11][11];chessArr1[1][2]=1;chessArr1[2][3]=2;System.out.printl...
int chessArr1[][] =new int[11][11];
chessArr1[1][2]=1;
chessArr1[2][3]=2;
System.out.println("------原始的二维数组------");
for(int[] row : chessArr1){
for(int data : row){
System.out.printf("%d\t",data);
}
System.out.println();
}
int sum =0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
sum++;
}
}
// 2. 创建对应的稀疏数组
int sparseArr[][]=new int[sum+1][3];
// 给稀疏数组赋值
sparseArr[0][0]=11;
sparseArr[0][1]=11;
sparseArr[0][2]=sum;
int chessArr2[][] =new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i < sparseArr.length; i++) {
chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
}
//输出还原后的二维数组
System.out.println();
System.out.println("*******还原后的二维数组******");
for(int[] row : chessArr2){
for(int data : row){
System.out.printf("%d\t",data);
}
System.out.println();
} 展开
chessArr1[1][2]=1;
chessArr1[2][3]=2;
System.out.println("------原始的二维数组------");
for(int[] row : chessArr1){
for(int data : row){
System.out.printf("%d\t",data);
}
System.out.println();
}
int sum =0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
sum++;
}
}
// 2. 创建对应的稀疏数组
int sparseArr[][]=new int[sum+1][3];
// 给稀疏数组赋值
sparseArr[0][0]=11;
sparseArr[0][1]=11;
sparseArr[0][2]=sum;
int chessArr2[][] =new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i < sparseArr.length; i++) {
chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
}
//输出还原后的二维数组
System.out.println();
System.out.println("*******还原后的二维数组******");
for(int[] row : chessArr2){
for(int data : row){
System.out.printf("%d\t",data);
}
System.out.println();
} 展开
3个回答
2020-04-17
展开全部
//写入磁盘
public static void writ(int sparseArr[][]) {
System.out.println("写入磁盘的数据中~~~~~~");
File file = new File("E:\\java\\sparseArr.txt");
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file));
if (!file.exists()) {
file.createNewFile();
}
StringBuilder allBuilder = new StringBuilder();
for (int[] rows : sparseArr) {
StringBuilder rowBuilder = new StringBuilder();
for (int item : rows) {
rowBuilder.append(item + "\t");
}
allBuilder.append(rowBuilder + "\n");
}
bw.write(String.valueOf(allBuilder));
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//读取磁盘
public static int[][] read() {
System.out.println("读取磁盘的数据中~~~~~~");
File file = new File("E:\\java\\sparseArr.txt");
int[][] sparseArr = null;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
if (!file.exists()) {
file.createNewFile();
}
String row = br.readLine();
String[] s = new String(row).split("\t");
sparseArr = new int[Integer.parseInt(s[0])][Integer.parseInt(s[1])];
while ((row = br.readLine()) != null) {
String[] s2 = new String(row).split("\t");
sparseArr[Integer.parseInt(s2[0])][Integer.parseInt(s2[1])] = Integer.parseInt(s2[2]);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return sparseArr;
}
public static void writ(int sparseArr[][]) {
System.out.println("写入磁盘的数据中~~~~~~");
File file = new File("E:\\java\\sparseArr.txt");
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file));
if (!file.exists()) {
file.createNewFile();
}
StringBuilder allBuilder = new StringBuilder();
for (int[] rows : sparseArr) {
StringBuilder rowBuilder = new StringBuilder();
for (int item : rows) {
rowBuilder.append(item + "\t");
}
allBuilder.append(rowBuilder + "\n");
}
bw.write(String.valueOf(allBuilder));
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//读取磁盘
public static int[][] read() {
System.out.println("读取磁盘的数据中~~~~~~");
File file = new File("E:\\java\\sparseArr.txt");
int[][] sparseArr = null;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
if (!file.exists()) {
file.createNewFile();
}
String row = br.readLine();
String[] s = new String(row).split("\t");
sparseArr = new int[Integer.parseInt(s[0])][Integer.parseInt(s[1])];
while ((row = br.readLine()) != null) {
String[] s2 = new String(row).split("\t");
sparseArr[Integer.parseInt(s2[0])][Integer.parseInt(s2[1])] = Integer.parseInt(s2[2]);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return sparseArr;
}
展开全部
老韩图解??????? 做的练习题吗???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
IO流自定义字节流的缓冲区:
思路:BufferedInputStream类中read()方法的工作原理
1)先一个一个从字节流中读取字节,读取一定量(自定义)之后,存储在一个字节数组(缓冲区)(FileInputStream.read(byte[] b)),并获得存储数量(read方法的返回值)。
2)一个一个字节返回,返回一个,存储数量减1,然后指针往后移一位,准备取下一个。
3)如果存储数量为0 ,代表当前数组中所有数据已经全部取完,此时再来一次读取(read(byte[] b)),再获得此次存储数量。
4)如果存储数量(即read方法返回-1),代表读到文件末尾,返回-1。
因此,需要用到以下几个变量:
读取的字节数量,指向数组中准备取哪一个的指针,将要返回的字节变量。
思路:BufferedInputStream类中read()方法的工作原理
1)先一个一个从字节流中读取字节,读取一定量(自定义)之后,存储在一个字节数组(缓冲区)(FileInputStream.read(byte[] b)),并获得存储数量(read方法的返回值)。
2)一个一个字节返回,返回一个,存储数量减1,然后指针往后移一位,准备取下一个。
3)如果存储数量为0 ,代表当前数组中所有数据已经全部取完,此时再来一次读取(read(byte[] b)),再获得此次存储数量。
4)如果存储数量(即read方法返回-1),代表读到文件末尾,返回-1。
因此,需要用到以下几个变量:
读取的字节数量,指向数组中准备取哪一个的指针,将要返回的字节变量。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询