需求:读取文件中的数据排序后再次写到本地
译:1.读取(读取文本中的数据,用字符输入流,缓冲字符输入流(辅))文件数据:
3 6 5 2 1 4 7 8
2.排序
3.写回本地
public class charStreamDemo13{
public static void main(String[] args){
//创缓冲字符输入流对象
BufferedReader br=new BufferedReader(new FileReader("charstream\\a.txt"));
//读取数据
String line;
while((line=br.readLine())!=null){
System.out.println(line);//3 6 5 2 1 4 7 8
}
br.close();
//进行排序,String,int类型没有排序,丢进数组 Arrays.sort(arr);
String[] arr=line.split(" ");
Arrays.sort(arr);
//排好序之后,就写进本地文件
//创建缓冲字符输出流对象
BufferedWriter bw=new BufferedWriter(new FileWriter("charstream\\a.txt"));
for(int i=0;i<arr.length;i++){
sout(arr[i]+" ");
bw.flush();
}
bw.close();
}
}
出现问题:
Q1: a.txt:36521478
控制台:36521478
A1:"36521478" 当成一个字符串,丢进数组,lenth=1,索引:0
Q2:
运行一次后:控制台保留原a.txt内容,a.txt内容更变:12345678

A2:
打开代码:

再运行一次: 37行加上空格

Q3:代码运行出现空指针异常

A3:可能是a.txt中:3 6 5 2 1 4 7 8
br.close():结束读取,打印:3 6 5 2 1 4 7 8
按照空格把line装进数组,8的后面全是空格,没有数据
在后面BufferedWriter,for循环遍历完 ,会出现空指针异常索引越界,第22行和27for循环有问题,第28行Arrays.sort(arr);没执行

注意:
1.int,string没有排序方法,Arrays.sort(arr);数组有
2.int没有split方法,string有
3.
4.

遗留问题:
视频代码:
package com.itheima.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
public class charStreamDemo13 {
public static void main(String[] args) throws Exception {
//9 1 2 5 3 10 4 6 7 8
//需求:1.读取文件中的数据91253104678 1.空格分开 2.排序后 3.再次写到本地
//读取数据 用字符输入流:FileReader(主要),BufferedFileReader()
BufferedReader br = new BufferedReader(new FileReader("charstream\\a.txt"));
String line = br.readLine();
System.out.println(line);//先读一行3 6 5 2 1 4 7 8
br.close();
//空格分开
String[] lineArr = line.split(" ");//按照空格丢进数组里
//数组类型String变成int
int[] arr=new int[lineArr.length];
for (int i = 0; i < lineArr.length; i++) {
String s=lineArr[i];
int num=Integer.parseInt(s);
arr[i]=num;
}
//4.排序
Arrays.sort(arr);
//Arrays.toString(arr); System.out.println(Arrays.toString(arr));
// 5.排序之后的结果写回本地
BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\a.txt"));
for (int i = 0; i < arr.length; i++) {
bw.write(arr[i] + " ");
bw.flush();
}
bw.close();
}
}
博客内容涉及通过Java读取文本文件中的数据,进行排序后重新写回到本地文件。在实现过程中遇到数组排序、文件读写及空指针异常的问题,分析了问题原因并提出解决方案。

被折叠的 条评论
为什么被折叠?



