我想同步读取所有数据,而不用readline()java中的方法从客户端或服务器接收(如readall()c ++)。
我不想使用类似下面的代码:
BufferedReader reader = new BufferedReader(new inputStreamReader(socket.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
document.append(line + "\n");
Run Code Online (Sandbox Code Playgroud)
我应该使用哪种方法?
如果您知道传入数据的大小,则可以使用类似以下方法:
public int read(char cbuf[], int off, int len) throws IOException;
Run Code Online (Sandbox Code Playgroud)
其中cbuf是目标缓冲区。
否则,您将不得不读取行或读取字节。流不知道传入数据的大小。只能顺序读取,直到到达结束为止(read方法返回-1)
参考这里流文档
像这样:
public static String readAll(Socket socket) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
sb.append(line).append("\n");
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12849 次 |
| 最近记录: |