JAVA 中的 IO流、字节流、字符流、缓冲流、转换流、序列流、打印流(三)

106 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1.1 字符输入流(Reader)

简述:java.io.Reader抽象类是字符流最顶层的父类(超类),可以读取字符信息到内存中。

public void close() // 关闭此流并释放与此流相关联的任何系统资源。
public int read() //从输入流读取一个字符。
public int read(char[] cbuf) // 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。
FileReader 构造方法
  • FileReader(File file)
  • FileReader(String fileName)
练习
FileReader fr1 = new FileReader("E:\\test\\a.txt");
FileReader fr2 = new FileReader("E:\\test\\b.txt");
// 读取一个字符
int len = 0;
while ((len = fr1.read()) != -1) {
	System.out.println(len);
}
// 读取多个字符
int len =0;
char[] cs = new char[1024]; 
while ((len = fr1.read(cs)) != -1) {
	System.out.println("长度" + len);
	System.out.println(new String(cs, 0, len)); 
}
// 释放资源
fr1.close();
fr2.close();

1.2 字符输出流(Writer)

简述:java.io.Writer 字符输出流,是所有字符输出流的父类,是一个抽象类。

FileWriter 构造方法
  • FileWriter(File file)
  • FileWriter(String fileName)
使用步骤
  1. 创建FileWriter对象,构造方法中传入要写入数据的目的地
  2. 使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换成字节的过程)
  3. 使用FileWriter中的flush,把缓冲区中的数据写入到硬盘
  4. 释放资源(会先把内存缓冲区中的数据刷新到硬盘中)
练习
FileWriter fw1 = new FileWriter("E:\\test\\c.txt"); 
FileWriter fw2 = new FileWriter("E:\\test\\c.txt", false); 

// 写入数据
fw1.write(97);
char[] cs = { 'a', 'b', 'c', 'd', 'e' };
fw1.write(cs); 
fw1.write(cs, 1, 3); 

// 换行: windows:\r\n Linux:/n Unix: /r
for (int i = 0; i < 10; i++) {
	fw1.write("HelloWorld" + i + "\r\n"); // 换行写入
}
// 将缓冲区的数据刷新到硬盘
fw1.flush();
// 释放资源
fw1.close();

第三章:缓冲流

简述: 功能更强大的流,能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些都是在基本的流对象基础之上创建而来的,是对基本流对象的一种增强