概述
简要说一下节点流和包装流的区别,节点流这个主要是针对具体的数据类型,比如说File类型、数组类型(ByteArrayInputStream)、管道类型(PipedInputStream),就是都是针对具体的数据类型有的具体的节点流
- FileInputStream
- ByteArrayInputStream
- PipedInputStream
包装流,其实就是完成了一个扩展,一个功能的扩展而已。看以下BufferedInputStream源码
protected FilterInputStream(InputStream in) {
this.in = in;
}
public BufferedReader(Reader in, int sz) {
super(in);
if (sz <= 0)
throw new IllegalArgumentException("Buffer size <= 0");
this.in = in;
cb = new char[sz];
nextChar = nChars = 0;
}
没有什么很神秘的东西,就是利用InputStream类型的参数接收传进来了节点流,然后扩展了一些更加高级的方法,这其实也是一种设计模式--修饰器模式。
用法
直接贴代码吧!主要感觉用法跟节点流都一样,没什么很大的区别。这个BufferedWriter有了一个readLine()方法。感觉其他的没什么不一样的。
BufferedReader bufferedReader = new BufferedReader(new FileReader(sourceFilePath));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(targetFilePath));
String line;
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line);
bufferedWriter.newLine();
}
bufferedWriter.close();
bufferedReader.close();