使用装饰模式进行装饰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(); }