BufferedInputStream在此处没有发挥作用

来源:6-8 Selector简析

Panda_io

2020-11-18

try {
                fin = new BufferedInputStream(new FileInputStream(source));
                fout = new BufferedOutputStream(new FileOutputStream(target));
                byte[] buffer = new byte[1024];
                int result;
              
                while ((result = fin.read(buffer)) != -1){
                    fout.write(buffer,0,result);
                }
     }

老师您好,请教一个问题, BufferedInputStream这个具体装饰类并没有去重写InputStream的read(byte[])byte方法,所以您调用的这个方法其实还是FileInputStream这个被装饰者实现的,BufferedInputStream并没有起到装饰器的作用,但是BufferedInputStream重写了read(byte b[], int off, int len)这个方法,您是否应该这样写来利用到BufferedInputStream的优势。

while ((result = fin.read(buffer,0,buffer.length)) != -1)


写回答

1回答

Stannum

2020-11-18

同学你好~你指出的这一点非常正确!这的确是演示代码中的一个失误,用了不合适的函数。我之前已经改写了这部分代码,但是因为搬家,一直没办法把改写的代码推送到代码仓库去,非常抱歉...你愿意将你的改写代码推送到仓库吗?如果你愿意,请在提出合并请求之后通知我一下,我马上帮你review~如果你不方便推送,请等我一天,我明天重写一次修正的代码推送出去,好吗?

0
1
Stannum
推送到代码仓库了哈
2020-11-19
共1条回复

系统学习Java网络编程 深度理解BIO/NIO/AIO

对比式学习助你真正理解BIO/NIO/AIO三大网络编程模型。

880 学习 · 148 问题

查看课程