[英]Android Socket BufferedReader readLine() not working when reading from the InputStream
[英]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.