• 【Java】IO流体常用类FileReader和FileWriter



    活动地址:CSDN21天学习挑战赛

    1.FileReader相关方法

    //1. 创建FileReader对象, fileReader = new FileReader(filePath);
    String filePath = “e:\story.txt”;
    FileReader fileReader = null;
    fileReader = new FileReader(filePath);

    //2.循环读取 使用read, 单个字符读取,返回该字符,如果达到文件末尾返回-1
    while ((data = fileReader.read()) != -1) {
    System.out.print((char) data);
    }

    //3.循环读取 使用read(char[ ]), 返回的是实际读取到的字符数如果返回-1, 说明到文件结束。
    while ((readLen = fileReader.read(buf)) != -1) {
    System.out.print(new String(buf, 0, readLen));
    }

    4.new String(char[ ]):将char[ ]转换成String。
    System.out.print(new String(buf, 0, readLen));

    5.new String(char[ ],off,len):将char[ ]的指定部分转换成String。

    package com.reader_;
    
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * @version 1.0
     * @auther Demo龙
     */
    public class FileReader_ {
        public static void main(String[] args) {
    //        //创建FileReader对象
    //        String filepath="e:\\kkk.txt";
    //        FileReader fileReader = null;
    //        try {
    //            fileReader = new FileReader(filepath);
    //
    //        } catch (FileNotFoundException e) {
    //            throw new RuntimeException(e);
    //        } finally {
    //        }
            Test test = new Test();
            test.readFile01();
            test.readFile02();
        }
    }
    
        class Test {
            /**
             * 单个字符读取文件
             */
            public void readFile01() {
                String filePath = "e:\\story.txt";
                FileReader fileReader = null;
                int data = 0;
                //1. 创建FileReader对象
                try {
                    fileReader = new FileReader(filePath);
                    //循环读取 使用read, 单个字符读取
                    while ((data = fileReader.read()) != -1) {
                        System.out.print((char) data);
                    }
    
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (fileReader != null) {
                            fileReader.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
            /**
             * 字符数组读取文件
             */
            public void readFile02() {
                System.out.println("~~~readFile02 ~~~");
                String filePath = "e:\\story.txt";
                FileReader fileReader = null;
    
                int readLen = 0;
                char[] buf = new char[8];
                //1. 创建FileReader对象
                try {
                    fileReader = new FileReader(filePath);
                    //循环读取 使用read(buf), 返回的是实际读取到的字符数
                    //如果返回-1, 说明到文件结束
                    while ((readLen = fileReader.read(buf)) != -1) {
                        System.out.print(new String(buf, 0, readLen));
                    }
    
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (fileReader != null) {
                            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
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    演示结果
    在这里插入图片描述
    在这里插入图片描述

    2.FileWriter相关方法

    1. //创建FileWriter对象
      FileWriter fileWriter = null;
      fileWriter = new FileWriter(filePath);//默认是覆盖写入
    2. new FileWriter(filePath/String,true);//追加模式,相当于流的指针在尾端
    3. write(int):写入单个字符
      fileWriter.write(‘H’);
    4. write(char[]):写入指定数组
      fileWriter.write(chars);
    5. write(char[],off,len):写入指定数组的指定部分
      fileWriter.write(“demo龙龙龙”.toCharArray(), 0, 3);
    6. write(string):写入整个字符串
      fileWriter.write(" 你好北京~");
      fileWriter.write(“风雨之后,定见彩虹”);
    7. write(string,off,len):写入字符串的指定部分
      fileWriter.write(“上海天津”, 0, 2);
      //在数据量大的情况下,可以使用循环操作.

    演示代码

    package com.writer_;
    
    import java.io.FileWriter;
    import java.io.IOException;
    
    /**
     * @version 1.0
     * @auther Demo龙
     */
    public class FileWriter_ {
        public static void main(String[] args) {
            String filePath = "e:\\note.txt";
            //创建FileWriter对象
            FileWriter fileWriter = null;
            char[] chars = {'a', 'b', 'c'};
            try {
                fileWriter = new FileWriter(filePath);//默认是覆盖写入
    //            3) write(int):写入单个字符
                fileWriter.write('H');
    //            4) write(char[]):写入指定数组
                fileWriter.write(chars);
    //            5) write(char[],off,len):写入指定数组的指定部分
                fileWriter.write("demo龙龙龙".toCharArray(), 0, 3);
    //            6) write(string):写入整个字符串
                fileWriter.write(" 你好,世界");
                fileWriter.write("风雨之后,定见彩虹");
    //            7) write(string,off,len):写入字符串的指定部分
                fileWriter.write("陕西西安", 0, 2);
                //在数据量大的情况下,可以使用循环操作.
    
    
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
    
                //对应FileWriter , 一定要关闭流,或者flush才能真正的把数据写入到文件
                /*
                    看看代码
                    private void writeBytes() throws IOException {
            this.bb.flip();
            int var1 = this.bb.limit();
            int var2 = this.bb.position();
    
            assert var2 <= var1;
    
            int var3 = var2 <= var1 ? var1 - var2 : 0;
            if (var3 > 0) {
                if (this.ch != null) {
                    assert this.ch.write(this.bb) == var3 : var3;
                } else {
                    this.out.write(this.bb.array(), this.bb.arrayOffset() + var2, var3);
                }
            }
    
            this.bb.clear();
        }
                 */
                try {
                    //fileWriter.flush();
                    //关闭文件流,等价 flush() + 关闭
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            }
    
            System.out.println("程序结束...");
    
    
        }
    }
    
    
    • 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
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    演示结果
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    项目整合flyway实现数据脚本的自动更新
    这12款idea插件,能让你代码飞起来
    桐乡上元——UI设计
    C++面试题精选-2024/06/26
    设计模式:里氏代换原则(Liskov Substitution Principle,LSP)介绍
    Python入门——yield生成器和iter迭代器
    71、Spring Data JPA 的 样本查询--参数作为样本去查询数据库的数据,也可以定义查询的匹配规则
    Redis常见数据类型下
    1.1.5 基于Ubuntu搭建LNMP环境
    P36 JFileChooser文件选择器
  • 原文地址:https://blog.csdn.net/qq_59708493/article/details/126130288