import java.io.*;
import java.util.Arrays;
public class Ans {
public static void main(String[] args) throws IOException {
//字节流是java 1.0提供的老方法,主要存在于一些老的代码中
FilterInputStream fis = new BufferedInputStream(new DataInputStream(new FileInputStream("test")));
byte[] bs = fis.readAllBytes();
System.out.println(Arrays.toString(bs));
BufferedOutputStream ots = new BufferedOutputStream(new DataOutputStream(new FileOutputStream("test2")));
ots.write(bs);
ots.close(); //或者使用close,这时缓冲区也会刷新清空
//ots.flush(); //当使用BufferedOutputStream时要使用flush刷新缓冲区才能将输出写出
}
static void test0() {
F f1 = new A(new B(new F()));
f1.a();
f1.b();
}
}
class F { //阅读了FilterInputStream的源码之后受到启发,理解了装饰器的运行方式
F() {}
void a() {System.out.println("fa");}
void b() {System.out.println("fb");}
public F f; //其实主要就是这个
}
class A extends F {
A(F f) {this.f = f; }
public void a() {
f.a();
System.out.println("aaa1111");
}
@Override
final public void b() {
f.b();
System.out.println("bbb1111");
}
//public F f;
}
class B extends F {
B(F f) {
this.f = f;
}
public void a() {
f.a();
System.out.println("aaa2222");
}
@Override
final public void b() {
f.b();
System.out.println("bbb2222");
}
//public F f;
}