IT源码网

装饰模式案列(OutputStream)

qq123 2021年02月13日 编程语言 447 0

使用装饰模式进行装饰OutputStream

写入文件成功

装饰类继承OutputStream类

DecorOutputStream
package com.wbg.springRedis.decorator; 
 
import java.io.IOException; 
import java.io.OutputStream; 
 
public class DecorOutputStream extends OutputStream { 
    private OutputStream os; 
    private double index = 0; 
    private double sum = 0; 
    public DecorOutputStream(OutputStream os) { 
        this.os = os; 
    } 
 
    @Override 
    public void write(int b) throws IOException { 
        this.index++; 
        double Progress = this.index/this.sum*100; 
        System.out.println("写入进度"+(int)Progress+"%"); 
            os.write(b); 
    } 
 
    @Override 
    public void write(byte[] b) throws IOException { 
        this.sum = b.length; 
        System.out.println("开始写入文件"); 
        super.write(b); 
        System.out.println("写入文件完毕"); 
    } 
}

测试:

 public static void main(String[] args) throws IOException { 
        FileOutputStream stream = new FileOutputStream(new File("g:/ccc.txt")); 
        DecorOutputStream los = new DecorOutputStream(stream); 
        los.write("hello, word!".getBytes()); 
        los.close(); 
    }

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!