本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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)
使用步骤
- 创建FileWriter对象,构造方法中传入要写入数据的目的地
- 使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换成字节的过程)
- 使用FileWriter中的flush,把缓冲区中的数据写入到硬盘
- 释放资源(会先把内存缓冲区中的数据刷新到硬盘中)
练习
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();
第三章:缓冲流
简述: 功能更强大的流,能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些都是在基本的流对象基础之上创建而来的,是对基本流对象的一种增强