繁体   English   中英

如何从Java中的InputStream对象读取包含换行符的字符串?

[英]How can I read a String including new line from InputStream object in Java?

我在Java中有一个ServerSocket:

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读取字节数组而不是String。 然后使用有效字符集将整个字节数组粉碎到String构造函数中。 这将要求您知道String的字节数。

您可以简单地逐个字符地阅读。 http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#read()

而不是读取行。

BufferedReader读取字符,直到它变为“\\ n”,“\\ r”或“\\ r \\ n”。 你可以逐个字符地阅读,但它不会改变任何东西,因为你如何确定哪个新的线路特征显示真正的新线?

暂无
暂无

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

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