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流体系。
- 粉丝: 251
- 资源: 1940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助