如何从Java中的InputStream对象中读取包含新行的字符串?
我有一个Java服务器套接字:如何从Java中的InputStream对象中读取包含新行的字符串?,java,io,inputstream,Java,Io,Inputstream,我有一个Java服务器套接字: ServerSocket serverSocket = new ServerSocket(1000); 它接受clientSocket: Socket clientSocket; clientSocket = serverSocket.accept(); 到目前为止,我一直在阅读这样的输入: BufferedReader clientSocketInputStream = new BufferedReader(new InputStreamReader(cli
ServerSocket serverSocket = new ServerSocket(1000);
它接受clientSocket:
Socket clientSocket;
clientSocket = serverSocket.accept();
到目前为止,我一直在阅读这样的输入:
BufferedReader clientSocketInputStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while ((inputLine = clientSocketInputStream.readLine()) != null){
String message = inputLine;
// Hack the computer connecting to this one after here
但是,如果发送的文本类似
String stringToBeSent = "Hello\nHowareyou";
那我就有麻烦了。因为我需要这个文本。2个不同的字符串对我没有帮助
我怎么能照原样读呢
谢谢。您只需逐字阅读即可 而不是读行。两个选项:
- 将多个字符串重新组合在一起
StringBuilder sb = new StringBuilder() while ((inputLine = clientSocketInputStream.readLine()) != null) { String message = inputLine; sb.append(message); sb.append('\n'); } String message = sb.toString();
- 读取字节数组而不是字符串,使用
而不是BufferedInputStream
。然后使用有效的字符集将整个字节数组粉碎到字符串构造函数中。这将要求您知道字符串将包含多少字节BufferedReader