有没有人能提供一个
public class CopyingInputStreamReader extends InputStreamReader {
public CopyingInputStreamReader(InputStream is, OutputStream copyStream) {
.....实现应该将所读取的内容复制到输出流中。我有我的实现,但我的硬盘崩溃了,所以我需要恢复它。请在接下来的5分钟内回复,否则我会自己想办法的。
发布于 2011-08-02 13:58:24
就我个人而言,我不会在读者级别上这样做。我会编写一个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;
}我不会在extend InputStreamReader上说明的原因是,所有read操作的结果都将是文本数据-然后您需要以某种方式将其写入到OutputStream中……
当然,如果您真的想从一种编码转换为另一种编码,则值得扩展Reader而不是InputStream,使用另一个Reader进行委托,并使用Writer进行写入。再一次,你停留在一个领域(文本),而不是自己成为转换的一部分。
编辑:我忘了提到你还需要重写非读方法,要么直接委托给输入流,要么抛出异常。(例如,您可能不希望支持标记/重置。)
发布于 2011-08-02 13:58:41
将IOUtils用于
IOUtils.copy(inputStream, outputStream);https://stackoverflow.com/questions/6907740
复制相似问题