code: public static long copy(Reader reader, Writer writer, int bufferSize, StreamProgress streamProgress) throws IORuntimeException {
  		char[] buffer = new char[bufferSize];
  		long size = 0;
  		int readSize;
  		if (null != streamProgress) {
  			streamProgress.start();
  		}
  		try {
  			while ((readSize = reader.read(buffer, 0, bufferSize)) != EOF) {
  				writer.write(buffer, 0, readSize);
  				size += readSize;
  				writer.flush();
  				if (null != streamProgress) {
  					streamProgress.progress(size);
  				}
  			}
  		} catch (Exception e) {
  			throw new IORuntimeException(e);
  		}
  		if (null != streamProgress) {
  			streamProgress.finish();
  		}
  		return size;
  	}
docs: 将Reader中的内容复制到Writer中
  
  @param reader Reader
  @param writer Writer
  @param bufferSize 缓存大小
  @param streamProgress 进度处理器
  @return 传输的byte数
  @throws IORuntimeException IO异常