簡體   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