有人可以提供
的来源吗?public class CopyingInputStreamReader extends InputStreamReader {
public CopyingInputStreamReader(InputStream is, OutputStream copyStream) {
.....
实现应该将读取的内容复制到输出流。我有我的实现,但我的HD崩溃了,所以我需要恢复它。请在接下来的5分钟内回复,否则我会自己想出来。
答案 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}}写到。再次,那么你保持在一个领域(文本)而不是自己成为转换的一部分。
编辑:我忘记提到你还需要覆盖非读取方法,直接委托给输入流,或者抛出异常。 (例如,您可能不想支持标记/重置。)