java缓冲流、转换流、序列化流.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
缓冲流 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。 字节缓冲流 构造方法 创建字节缓冲输入流: BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt")); 创建字节缓冲输出流: BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt")); Java 缓冲流是Java I/O流中的一个重要概念,它主要设计用于提高程序在处理输入输出操作时的性能。在创建缓冲流对象时,系统会自动创建一个内部的默认大小的缓冲区数组,数据的读写操作都是在这个缓冲区中进行,而不是直接与底层的物理设备交互。这样减少了实际的系统I/O操作次数,从而提高了读写效率。 1. 字节缓冲流(Byte Buffer Stream) - 字节缓冲输入流(BufferedInputStream):通过`new BufferedInputStream(FileInputStream)`创建,例如:`BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt"))`。这个构造方法将一个普通的字节输入流包装成带缓冲的输入流,使得数据读取更高效。 - 字节缓冲输出流(BufferedOutputStream):通过`new BufferedOutputStream(FileOutputStream)`创建,例如:`BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt"))`。同理,这将普通字节输出流转换为带缓冲的输出流,提高写入速度。 2. 示例代码: 下面的代码展示了如何使用字节缓冲流进行文件复制: ```java public class Demo { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("ChromeSetup.exe")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\ChromeSetup_copy.exe"))) { byte[] bytes = new byte[8 * 1024]; int len; while ((len = bis.read(bytes)) != -1) { bos.write(bytes, 0, len); } } catch (IOException e) { e.printStackTrace(); } long end = System.currentTimeMillis(); System.out.println("缓冲流使用数组复制时间:" + (end - start) + " 毫秒"); } } ``` 这段代码从"ChromeSetup.exe"读取数据,并使用缓冲流写入到"ChromeSetup_copy.exe",最后输出使用缓冲流复制文件所需的时间。 3. 字符缓冲流(Character Buffer Stream) - 字符缓冲输入流(BufferedReader):通过`new BufferedReader(FileReader)`创建,例如:`BufferedReader br = new BufferedReader(new FileReader("br.txt"))`。它用于读取字符数据,如文本文件。 - 字符缓冲输出流(BufferedWriter):通过`new BufferedWriter(FileWriter)`创建,例如:`BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"))`。用于写入字符数据。 4. 特有方法: - `BufferedReader` 的 `readLine()` 方法:读取一行文本,直到遇到换行符或文件末尾,返回一个包含该行内容的字符串,如果到达文件末尾则返回 `null`。 - `BufferedWriter` 的 `newLine()` 方法:根据系统的行分隔符写入一行行分隔符。在不同操作系统上,行分隔符可能不同(例如,Windows 使用 "\r\n",Linux 使用 "\n")。 5. 示例代码: - `readLine()` 方法演示: ```java public class Demo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader("a.txt")); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); } } ``` 这个例子会读取"a.txt"文件的每一行并打印到控制台。 - `newLine()` 方法演示: ```java public class Demo { public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt")); for (int i = 0; i < 5; i++) { bw.write("Line " + i); bw.newLine(); } bw.close(); } } ``` 这段代码会向"a.txt"文件写入五行数据,每行都是 "Line " 加上行号。 缓冲流是Java I/O流中的重要工具,能够显著提升文件操作的性能。除了基本的字节和字符缓冲流外,还有对应的打印流(PrintStream 和 PrintWriter),以及可以对其他流进行缓冲化的装饰器模式实现,例如 FilterInputStream 和 FilterOutputStream。转换流(如InputStreamReader 和 OutputStreamWriter)则用于在字节流和字符流之间进行转换,适应不同的编码需求。序列化流(ObjectInputStream 和 ObjectOutputStream)用于对象的序列化和反序列化,实现了对象的持久化存储。这些流类共同构成了Java丰富的I/O流体系。


































- 粉丝: 305
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 对供电通信系统运行维护的安全防护分析.docx
- 论在企业信息化中计算机应用技术的分析研究.docx
- Java基础常见英语词汇(共).doc
- 智能网络化多媒体教室建设项目方案.doc
- CDMA直放站应用和网络规划与优化.doc
- 怎样把电视连接电脑看宽带网络电影电视.doc
- 基于区块链支撑的保险业创新模式分析.docx
- 小班音乐游戏-小小鸡.doc
- 探讨以就业为导向的高职计算机教学模式优化对策.docx
- 物联网对汽车企业商业模式创新的影响.docx
- 基于校级层面的网络教学资源平台建设研究.docx
- 多媒体技术教程ch7多媒体操作系统.ppt
- 财务信息化提高学校财务管理效能研究.docx
- 【小米盒子越狱破解教程】越狱、Root、再到安装第三方安卓应用及遥控器软件完全体验!.doc
- 校园网络电视媒体直播系统的设计与实现.docx
- 江苏专转本计算机复习重点.doc


