当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/44313.html

相关文章:

  • [C++][第三方库][Websocket]详细讲解
  • 河网结构指标对应的英文名称
  • Crypto虐狗记---”你“和小鱼(六)
  • NRF52832
  • 调试意义、步骤及方式
  • 在Ubuntu 16.04上使用Logrotate管理日志文件
  • 通信工程学习:什么是IOT物联网
  • scipy.stats.nakagami简介
  • 智能制造领域的系统都有啥,MES、APS、PLC、SCADA等
  • import torch报错问题:OSError: [WinError 126] 找不到指定的模块。
  • rocketmq
  • 05:(寄存器开发)定时器一
  • 内网Debian\Ubuntu服务器安装dep包,基于apt-rdepends下载相关依赖
  • ZJYYC2360. 圆球的最大得分
  • 【python实操】python小程序之定义类
  • 【Linux】Linux命令与操作详解(一)文件管理(文件命令)、用户与用户组管理(创建、删除用户/组)
  • cisco交换机命令大全
  • [SAP ABAP] 程序调用
  • 解决方案:batch_size跟epoch有什么不同
  • 学校周赛(3)