复制InputStreamReader

时间:2011-08-02 05:43:49

标签: java

有人可以提供

的来源吗?
public class CopyingInputStreamReader extends InputStreamReader {
   public  CopyingInputStreamReader(InputStream is, OutputStream copyStream) {
  .....

实现应该将读取的内容复制到输出流。我有我的实现,但我的HD崩溃了,所以我需要恢复它。请在接下来的5分钟内回复,否则我会自己想出来。

2 个答案:

答案 0 :(得分:2)

IOUtils

一起使用
IOUtils.copy(inputStream, outputStream);

答案 1 :(得分:0)

我个人不会在读者层面这样做。我会编写一个InputStream来覆盖 InputStream中的所有方法,委托给已经传递给构造函数的输入流,并在每次读取后写入输出流,在将数据返回给调用者之前。例如:

@Override
public int read(byte[] buffer, int start, int length) throws IOException
{
    int ret = input.read(buffer, start, length);
    output.write(buffer, start, ret);
    return ret;
}

我不会在扩展InputStreamReader进行的原因是所有read操作的结果都是 text 数据 - 您需要编写这些数据以某种方式OutputStream ......

当然,如果你真的想要从一种编码转换为另一种编码,那么值得扩展Reader而不是InputStream,另一个Reader委托给一个Writer 1}}写到。再次,那么你保持在一个领域(文本)而不是自己成为转换的一部分。

编辑:我忘记提到你还需要覆盖非读取方法,直接委托给输入流,或者抛出异常。 (例如,您可能不想支持标记/重置。)