读写文件同时获取流数据大小
之前有一次做一个需求,需要在用户下载资源后,记录下载大小。这时如果重新把源读一遍再记录显然是比较浪费资源的,调研了一下后,发现可以用一个包装流,包装输出流并记录通过流的数据大小。Apache Commons IO以及Google guava包中都已经提供了这种支持,类名都是CountingOutputStream(当然也有对应的CountingOutputStream),它们都是用的装饰器模式。
参考:https://stackoverflow.com/questions/1756418/response-outputstream-content-length