繁体   English   中英

从 InputStream 或 BufferedReader 直接读取套接字?

[英]Read a socket direclty from InputStream or from BufferedReader?

我的目标是从Socket读取 n bytes

直接从InputStream中读取,还是将其包装到BufferedReader中更好?

在整个 .net 中,您可以找到这两种方法,但没有说明何时使用哪种方法。

Socket socket;
is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

char[] buffer = new char[CONTENT_LENGTH];

//what is better?
is.read(buffer);
br.read(buffer);

由于您的目标是“读取 n 个字节”,因此从您的输入创建字符Reader毫无意义,因为这可能意味着第 n 个字节是字符的一部分 - 并假设 stream 是基于字符的。

自 JDK11 以来,有一个方便的读取 n 字节的调用:

byte[] input = is.readNBytes(n);

如果 n 很小并且您经常重复上述操作,请考虑使用bis = new BufferedInputStream(is)in.transferTo(out)len = read(byteArray) ,这对于较长的流可能更有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM