• javaIO流05:FileReader和Filewriter


    FileReader

    FileReader是字符流,按照字符来操作io

    1. FileReader的关系继承图

    在这里插入图片描述
    2. FileReader 相关方法

    • new FileReader(File/String)
    • read():每次读取单个字符,然后返回该字符,如果到文件末尾返回-1
    • read(chat[] ):批量读取多个字符到数组中,返回读取到的字符数,如果到文件末尾返回-1
    • new String(char[]):将数组char[]转换为String
    • new String(char[[],off,len):将数组char[]中从下标off开始往后数len个字符转换为String
    1. FileReader的使用案例
    @Test
        public void Reader(){
            //读取的文件位置
            String filePath="D:/IOFile/news5.txt";
            FileReader fileReader=null;
              //定义一个int类型来接收read方法返回的ASCLL码
            int data = 0;
            try {
                fileReader = new FileReader(filePath);
               //read()方法读取一个字符返回一个字符,但这里的字符是以ASCLL码来表示的
                while (( data=fileReader.read())!=-1){
                    //输出只需要将int类型的data转换为char
                    System.out.print((char)data);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        @Test
        public void Reader2(){
            String filePath="D:/IOFile/news5.txt";
            FileReader fileReader=null;
            int readlen = 0;
            //以数组的方式进行读取,每次读取(new char[个数])个字符
            char[] buf=new char[8];
            try {
                fileReader = new FileReader(filePath);
                while (( readlen=fileReader.read(buf))!=-1){
                    System.out.println((new String(buf,0,readlen)));
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    Filewriter

    Filewriter是字符流,按照字符来操作io

    1. Filewriter的关系继承图

    在这里插入图片描述
    2. Filewriter 相关方法

    • new Filewriter(File/String):会覆盖以前的内容
    • new Filewriter(File/String,true):不会覆盖以前的内容,在以前内容最后进行写入
    • write(int):写入单个字符
    • write(char[]):写入指定数组
    • write(char[],off,len):写入数组char[]中从下标off开始往后数len个字符
    • write(String):写入整个字符串
    • write(String,off,len):写入中字符串从下标off开始往后数len个字符
    • 注意
      Filewriter在使用后必须调用close()方法关闭或者flush()方法刷新,否则写入不到指定的文件中去。
    1. Filewriter的使用案例
    @Test
        public void Test(){
            String fileWPath="D:/IOFile/news6.txt";
            FileWriter fileWriter =null;
             char[] cha={'a','b','c'};
            try {
                fileWriter= new FileWriter(fileWPath);
                //write(int):写入单个字符
                fileWriter.write("h");
    
                //write(char[]):写入指定数组
                fileWriter.write(cha);
    
    //write(char[],off,len):写入数组char[]中从下标off开始往后数len个字符
                fileWriter.write(cha,0,2);
    //write(String):写入整个字符串
                fileWriter.write("hello,world");
    //write(String,off,len):写入中字符串从下标off开始往后数len个字符
               fileWriter.write("hello,world!",11,1);
                System.out.println("写入字符成功");
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    //为什么FileWriter使用后必须关闭或者刷新,否则写入不到指定的文件中去
                    //查看close源码
                    //close-->se.close-->this.implClose()-->this.writeBytes();
                    // writeBytes();直到这里才是将数据写入到文件中
                    // 查看flush源码
                    //flush--> se.flush();-->this.implFlush();--> this.implFlushBuffer();--> this.writeBytes();
                    //发现close和flush最后都要进行writeBytes方法
                    //所以如果不调用close或者flush就无法执行writeBytes方法,也就无法写入数据进入文件
                    
                    //fileWriter.close();
                     fileWriter.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    1. 为什么 Filewriter在使用后必须调用close()方法关闭或者flush()方法刷新

    //为什么FileWriter使用后必须关闭或者刷新,否则写入不到指定的文件中去
    //查看close源码
    //close–>se.close–>this.implClose()–>this.writeBytes();
    // writeBytes();直到这里才是将数据写入到文件中
    // 查看flush源码
    //flush–> se.flush();–>this.implFlush();–> this.implFlushBuffer();–> this.writeBytes();
    //发现close和flush最后都要进行writeBytes方法
    //所以如果不调用close或者flush就无法执行writeBytes方法,也就无法写入数据进入文件

  • 相关阅读:
    K8S知识点(七)
    如何将PDF设置为只读?
    ElasticSearch7.3学习(二十七)----聚合概念(bucket和metric)及其示例
    C语言:一级指针访问二维数组
    接口自动化【六】——接口关联之jsonpath提取+设置全局变量+通用封装
    php批量excel转word
    VOL_常用记录!!-----后端
    MySQL的预编译入门
    Linux文件权限修改
    OSN 1800 II 紧凑型 华为多业务光传输设备
  • 原文地址:https://blog.csdn.net/m0_52051155/article/details/126668610