节点流和处理流
【摘要】 节点流和处理流基本介绍(1)节点流可以从一个特定的数据源读写数据,如FileReader,FileWriter。(2)处理流(包装流)是“连接”在已存在的流(节点流或处理流之上),为程序提供更为强大的读写功能,也更加灵活,如BufferedReader、BufferedWriter。节点流和处理流的区别和联系(1)节点流是底层流/低级流,直接跟数据源相接。(2)处理流(包装流)包装节点流,既...
节点流和处理流
基本介绍
(1)节点流可以从一个特定的数据源读写数据,如FileReader,FileWriter。
(2)处理流(包装流)是“连接”在已存在的流(节点流或处理流之上),为程序提供更为强大的读写
功能,也更加灵活,如BufferedReader、BufferedWriter。
节点流和处理流的区别和联系
(1)节点流是底层流/低级流,直接跟数据源相接。
(2)处理流(包装流)包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来
完成输入输出。
(3)处理流(包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连。
处理流的功能主要体现在以下两个方面
(1)性能的提高:主要以增加缓冲的方式来提高输入输出的效率。
(2)操作的便捷:处理流可以提供一系列便捷的方法来一次输入输入大量的数据,使用更加灵活方
便。
处理流BufferedReader和BufferedWriter
1)BufferedReader和BufferedWriter属于字符流,是按照字符来读取数据的
2)关闭处理流时,只需要关闭外层流即可
(1)使用BufferedReader读取文本文件,并显示在控制台
import java.io.BufferedReader;
import java.io.FileReader;
public class BufferedReader_ {
public static void main(String[] args) throws Exception {
String filePath = "e:\\a.java";
//创建 bufferedReader
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
//读取
String line; //按行读取, 效率高
//说明
//1. bufferedReader.readLine() 是按行读取文件
//2. 当返回 null 时,表示文件读取完毕
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
//关闭流, 这里注意,只需要关闭 BufferedReader ,因为底层会自动的去关闭 节点流
//FileReader。
/*
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
try {
in.close();//in 就是我们传入的 new FileReader(filePath), 关闭了.
} finally {
in = null;
cb = null;
}
}
}
*/
bufferedReader.close();
}
}
(2)使用BufferedWriter将“Hello”,写入到文件中
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriter_ {
public static void main(String[] args) throws IOException {
String filePath = "e:\\ok.txt";
//创建 BufferedWriter
//说明:
//1. new FileWriter(filePath, true) 表示以追加的方式写入
//2. new FileWriter(filePath) , 表示以覆盖的方式写入
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));
bufferedWriter.write("Hello");
bufferedWriter.newLine();//插入一个和系统相关的换行
bufferedWriter.write("Hello2");
bufferedWriter.newLine();
bufferedWriter.write("Hello3");
bufferedWriter.newLine();
//说明:关闭外层流即可 , 传入的 new FileWriter(filePath) ,会在底层关闭
bufferedWriter.close();
}
}
BufferedInputStream和BufferedOutputStream
BufferedInputStream是字节流,在创建BufferedInputStream时,会创建一个内部缓冲区数组。
BufferedOutputStream是字节流,实现缓冲的输出流,可以将多个字节写入底层输出流中,而不必对每次字节写入调用底层系统。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)