Java 我可以同时使用BufferedReader和BufferedInputStream吗?
我只是想知道是否可以同时使用BufferedReader和BufferedInputStream 例如,我创建一个套接字并从服务器读取一些数据,假设我使用默认字符集。我可以这样编码吗Java 我可以同时使用BufferedReader和BufferedInputStream吗?,java,io,inputstream,Java,Io,Inputstream,我只是想知道是否可以同时使用BufferedReader和BufferedInputStream 例如,我创建一个套接字并从服务器读取一些数据,假设我使用默认字符集。我可以这样编码吗 Reader reader = new BufferedReader( new InputStreamReader( new BufferedInputStream(
Reader reader = new BufferedReader(
new InputStreamReader(
new BufferedInputStream(
socket.getInputStream)));
或者我应该一次只使用这两个类中的一个?谢谢你的帮助。你可以,但这毫无意义。没有优势。只需使用
BufferedReader
。它将从InputStreamReader
中读取4K个数据块,目前可能会更多,因此InputStreamReader
没有任何效率问题,例如一次解码一个char
。唯一有帮助的方法是如果有更多的缓冲区帮助应用程序,如果可以的话,最好增加BufferedInputStream的缓冲区大小,而不是包装对象。另外,请考虑改用NIO,并在InputStream上直接使用直接缓冲区(如果您想提高速度,可以使用大的64k缓冲区)。@markspace-它可能无法提供“更多”缓冲。当BufferedReader
用完字符时,它将沿着管道发出一个大型read
请求。根据相对缓冲区大小、文件编码等,这可能在不从操作系统读取的情况下得到满足,或者可能需要1个、2个或多个操作系统读取调用。“假设我使用默认字符集”-这没有帮助。默认的字符集可以是任何东西,而实际的字符集实际上可能很重要。