1.
8位流,产品流(又称装饰流):必须依赖基本流
装饰流:装饰设计模式,在产品上添加一些新的功能形成新的产品
Java.io.ObjectInputStream
Java.io.ObjectOutputStream
Java.io.DateInputStream
Java.io.DateOutputStream
Java.io.PrintStream: 打印流可以依赖可以不依赖基本流
Java.io.BufferedInputStream:加快速度,优化读取。(放在File和Object之间)
Java.io.BufferedOutputStream
简单工厂:创建型设计模式(不属于23种设计模式)
Java.io.ByteArrayInputStream
Java.io.ByteArrayOutputStream
2.装饰模式举例.
publicclass 奶茶 {
int price=5;
public String getName() {
return "奶茶";
}
public int getPrice(){
return price;
}
publicclass 巧克力 extends 奶茶{
private int price=3;
奶茶c=null;
public 巧克力(奶茶 c){
this.c=c;
}
public String getName() {
return "巧克力"+ c.getName();
}
public int getPrice(){
return price+c.getPrice();
}
}
public staticvoid main(String[] args) {
奶茶a3=new 巧克力(new 红豆(new 奶茶()));
System.out.println(a3.getName());
System.out.println(a3.getPrice());
}
3.对象的写入
基本流:FileOutputStreamout=new FileOutputStream("d:\\a.obj");
BufferedOutputStreamobin=new BufferedOutputStream(out);装饰城对象,具有加快速度,优化读取的作用(放在FileOutputStream 和 ObjectOutputStream 中间)
ObjectOutputStream oout=new ObjectOutputStream(obin);
对象的读取:
FileInputStreamin=new FileInputStream("d:\\a.obj");
BufferedInputStreamibin=new BufferedInputStream(in);
ObjectInputStreamoin=new ObjectInputStream(ibin);
Dog d1=(Dog)oin.readObject();
4.
FileOutputStreamout=new FileOutputStream("d:\\a.obj");
DateOutputStream dateout=new DateOutputStream(out);数据类型流
5.
System.setOut(new PrintStream(“c:\\a.log”));通道替换,打印在文件上
System.out.println(“gubnjhi”);
6.控制台输入
InputStreamin=System.in;
byte[]b=byte[1024];
in.read(b);
System.out.println(newString(b).trim());
7.常规的访问方式:”Hello” 字节 Output 硬盘
String 字节
8.装配假流
byte[] bb="hello java!!!".getBytes();
ByteArrayInputStream bin=new ByteArrayInputStream(bb);
BufferedInputStream in=new BufferedInputStream(bin);
byte[] b=new byte[100];
in.read(b);
System.out.println(new String(b).trim());
in.close();
9.截获
ByteArrayOutputStream bout=new ByteArrayOutputStream();
System.setOut(new PrintStream(bout));
System.out.println("bswaojdbfcwe");
System.out.println("bswaojdbfcwe");
System.out.println("bswaojdbfcwe");
System.err.println(new String(bout.toByteArray()));