• javaIO流07:处理流BufferedReader和BufferedWriter,Buffer拷贝


    BufferedReader

    BufferedReader(处理流):从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

    1. BufferedReader的方法
    用法解释
    void close()关闭该流并释放与之关联的所有资源。
    void mark(int readAheadLimit)标记流中的当前位置。
    boolean markSupported()判断此流是否支持 mark() 操作(它一定支持)。
    int read()读取单个字符。
    int read(char[] cbuf, int off, int len)将字符读入数组的某一部分。
    String readLine()读取一个文本行。
    boolean ready()判断此流是否已准备好被读取。
    void reset()将流重置到最新的标记。
    long skip(long n)跳过字符。
    1. BufferedReader用法示例
    public class Demo9 {
        //读取一个字符文件
        public static void main(String[] args) throws IOException {
            String filePath="D:/IOFile/news5.txt";
            //创建BufferedReader,传一个FileReader对象
            BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
            String line;
            //调用readline方法按行读取,效率高
            //如果已到达流末尾,则返回 null 表示文件读取完毕
             while ((line=bufferedReader.readLine())!=null){
                 System.out.println(line);
             }
             //关闭流,只需要关闭BufferedReader,虽然我们创建了节点流,
            // 但是当我们关闭BufferedReader时,底层会调用我们传进来的节点流对象的close,从而关闭节点流
             bufferedReader.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    BufferedWriter

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    1. BufferedWriter的方法
    用法解释
    void close()关闭此流,但要先刷新它。
    void flush()刷新该流的缓冲。
    void newLine()写入一个行分隔符。
    void write(char[] cbuf, int off, int len)写入字符数组的某一部分。
    void write(int c)写入单个字符。
    void write(String s, int off, int len)写入字符串的某一部分。
    1. BufferedWriter用法示例
    public class Demo10 {
        public static void main(String[] args) throws IOException {
            String filePath="D:/IOFile/news7.txt";
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));
            bufferedWriter.write("hello,");
            bufferedWriter.write("world");
            //换行
            bufferedWriter.newLine();
            bufferedWriter.write("hello,");
            bufferedWriter.newLine();
            bufferedWriter.write("world");
            //追加写入
            BufferedWriter bufferedWriter2 = new BufferedWriter(new FileWriter(filePath,true));
            bufferedWriter2.write(123);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    BufferedReader和BufferedWriter拷贝

    使用BufferedReader将需要拷贝的文件读取到程序,再使用BufferedWriter写入到指定的位置

    public class Demo11 {
        public static void main(String[] args) {
            //Reader和Writer都是读取字符的,不能读取二进制文件(图片,视频,音频。。)
            String fileReaderPath="D:/IOFile/news7.txt";
            String fileWritePath="D:/IOFile/news/news7.txt";
            BufferedReader bufferedReader=null;
            BufferedWriter bufferedWriter=null;
            String line;
            try {
                 bufferedReader = new BufferedReader(new FileReader(fileReaderPath));
                 bufferedWriter = new BufferedWriter(new FileWriter(fileWritePath));
    
                while ((line=bufferedReader.readLine())!=null){
                    //readLine是一行一行的进行读取但是读取之后是不会自动换行的,所以我们需要调用newLine
                    bufferedWriter.write(line);
                    bufferedWriter.newLine();
    
                }
                System.out.println("字符文件拷贝成功");
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (bufferedReader!=null){
                        bufferedReader.close();
                    }
                    if (bufferedWriter!=null){
                        bufferedWriter.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
  • 相关阅读:
    RabbitMQ Demo
    缓存空间优化实践
    力扣:494. 目标和
    测试接触不到第一手需求,如何保证不漏测?
    Java:修改Jar的源码,并上传Nexus私有仓库,替换jar版本
    数字新纪元:探索Web3对社会的影响
    MySQL的结构化语言 DDL DML DQL DCL
    S2SH志愿者捐赠管理系统|捐助计算机毕业论文Java项目源码下载
    【从0-1成为架构师】高可用架构
    Redis入门讲解(介绍、安装、常用命令)
  • 原文地址:https://blog.csdn.net/m0_52051155/article/details/126712770