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;
}