我应该始终将输入流包装为缓冲输入流吗?
当我知道给定的输入流是否不是缓冲的时,总是将输入流包装为缓冲的输入流是否有意义?例如:
InputStream is = API.getFromSomewhere()
if(!(is instanceof BufferedInputStream))
return new BufferedInputStream(is);
return is;
当我知道给定的输入流是否不是缓冲的时,总是将输入流包装为缓冲的输入流是否有意义?例如:
InputStream is = API.getFromSomewhere()
if(!(is instanceof BufferedInputStream))
return new BufferedInputStream(is);
return is;
当我知道给定的输入流是否不是缓冲的时,总是将输入流包装为缓冲的输入流是否有意义?
不。
如果您可能执行大量小读取(一次一个字节或几个字节),或者如果您想使用缓冲API提供的一些更高级别的功能,这是有道理的;例如方法。BufferedReader.readLine()
但是,如果您只打算使用和/或方法执行大块读取,则将 包装在a中没有帮助。read(byte[])
read(byte[], int, int)
InputStream
BufferedInputStream
(作为对@Peter Tillman对自己答案的评论的回应,块读取用例肯定占类使用的0.1%以上!但是,他是正确的,因为当您不需要时使用缓冲API通常是无害的。InputStream
我不会那样做,我会把它留在尽可能高的抽象级别。如果您不打算使用BufferedStream的标记和重置功能,为什么要费心包装它呢?
如果消费者需要它,最好把它包装在那里。