Java重修笔记 第六十一天 坦克大战(十一)IO 流 - 节点流和处理流、BufferedReader 和 BufferedWriter

  • 节点流和处理流的区别和联系

1. 节点流是底层流/低级流,直接和数据源联系

2. 处理流是经过包装过后的节点流,也叫包装流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出

3. 处理流(包装流)对节点流进行包装,使用的是修饰器设计模式,通在处理流类中定义一个父类的 reader/writer ,调用相关方法来操作传入的对应子类,而包装流则不会与数据源直接相连

  • 修饰器模式和代理模式的区别

1. 修饰器模式强调的是增强自身,通过增强类的方法来调用原有类的方法,调用时不改变原有类的方法,只是通过增强类的方法调用原有类的方法而已

2. 代理模式通过实现目标类的接口实现静态或动态的代理,通过继承或实现原有类,重写原有类的方法来进行代理

  • BufferedReader 和 BufferedWriter 类

1. BufferedReader 和 BufferedWriter 都属于 Reader 和 Writer 的子类,所以都是属于字符流,适合用来操作文本文件

2. 关闭处理流时,只需要关闭外层流就行了

  • BufferedReader 类的常用方法
1. 构造函数

        public BufferedReader(Reader in)

        说明:创建使用默认大小的输入缓冲区的缓冲字符输入流

2. 读取一行字符串

        public String readLine() throws IOException

        返回值:读取到的一行字符串,以换行符('\ n')或回车符('\ r')为一行,若到达文件流末尾则返回 null

        异常:IOException - 如果发生I / O错误

3. 关闭流

        public void close() throws IOException

        异常:IOException - 如果发生I / O错误

        说明:底层会自动关闭传进来的节点流

public class BufferedReader_ {
    public static void main(String[] args) throws IOException {
        // 通过包装流来读取文件内容
        String filePath = "d:\\a.txt";
        // 创建 BufferedReader 包装流
        BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
        // 按行读取文件内容
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        // 关闭流
        bufferedReader.close();
    }
}

  • BufferedWriter 类的常用方法
1. 构造方法

        public BufferedWriter(Writer out)

        说明:创建使用默认大小的输出缓冲区的缓冲字符输出流

2. 写入字符串

        public void write(String str) throws IOException

        参数:str - 要写入的字符串

        异常:IOException - 如果发生I / O错误

3. 写入字符串的一部分

        public void write(String s, int off, int len) throws IOException

        参数:s - 要写入的字符串

                   off - 开始读取字符的偏移量

                   len - 要写入的字符数

        异常:IOException - 如果发生I / O错误

4. 写入换行

        public void newLine() throws IOException

        异常:IOException - 如果发生I / O错误

5. 关闭流

        public void close() throws IOException

        异常:IOException - 如果发生I / O错误

        说明:底层会自动关闭传进来的节点流

public class BufferedWrite_ {
    public static void main(String[] args) throws IOException {
        String filePath = "d:\\c.txt";
        String content = "HSP 韩顺平教育";
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath, true));
        bufferedWriter.write(content);
        bufferedWriter.newLine();
        bufferedWriter.write(content);
        bufferedWriter.newLine();
        bufferedWriter.write(content);
        bufferedWriter.close();
    }
}

  • 拷贝文件
public class BufferedCopy_ {
    public static void main(String[] args) throws IOException {
        String srcFilePath = "d:\\hello.txt";
        String destFilePath = "d:\\helloCopy.txt";
        String buffer;
        BufferedReader bufferedReader = new BufferedReader(new FileReader(srcFilePath));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(destFilePath));
        while ((buffer = bufferedReader.readLine()) != null) {
            bufferedWriter.write(buffer);
            bufferedWriter.newLine();
        }
        bufferedReader.close();
        bufferedWriter.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值