• 读取文件中的数据排序后再次写到本地


    需求:读取文件中的数据排序后再次写到本地

    译: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

                        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();
        }
    }
    

  • 相关阅读:
    高阶函数的简单写法
    BlackBerry 软件全球现已部署超过2.15亿辆汽车
    李宏毅 2022机器学习 HW3 boss baseline 上分记录
    POJ 3662 Telephone Lines 二分,最小化第k大的数
    神经网络训练ai玩游戏,人工神经网络入门
    交换机IOS模式
    AI图书推荐:AI驱动的图书写作工作流—从想法构思到变现
    Mysql 官方提供的公共测试数据集 Example Databases
    一文详解头层反绒皮和二层反绒皮的区别,别再傻傻分不清了!
    C++ list详解以及模拟实现
  • 原文地址:https://blog.csdn.net/Ada_X25025/article/details/126068006