从 bufferedReader 到 arraylist 的字符串

String from bufferedReader to arraylist

我有一个本地服务器-class,它向客户端-class发送两条字符串消息("The first message"、"The second message")。 在 client-class 中,我想将它们放入 ArrayList 来自 BufferedReader 的代码,然后打印。

void go () throws IOException {
    Socket socket = new Socket("127.0.0.1",4242);
    InputStreamReader streamReader = new InputStreamReader(socket.getInputStream());
    BufferedReader reader = new BufferedReader(streamReader);
    ArrayList <String> list = new ArrayList<String>();
    while (reader.readLine() != null) {
       list.add(reader.readLine());
    }
    System.out.println(list);
}

但我得到的只是一行 "null" 它出什么问题了? 我将非常感谢任何帮助

一旦你执行 .readLine() 它将不再在缓冲区中,将你的 while 循环更改为:

String line = null;
while((line = reader.readLine()) != null) {
    list.add(line);
}

ciprianoss 是正确的,但也在循环中

while (reader.readLine() != null) {
   list.add(reader.readLine());
}

您正在两次读取文件

偶尔一次,在您添加之前再一次。

list.add(reader.readLine());

正如 ciprianos 所建议的那样

String line;
while( (line = reader.readLine()) != null)
{
   list.add(line);
{

最简单的方法应该是使用 bufferedReader.lines(),其中 returns 一个流:

public List<String> readerToList(final Reader reader) {
  try (final BufferedReader bufferedReader = new BufferedReader(reader)) {
    return bufferedReader.lines().collect(Collectors.toList());
  }
}