从 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());
}
}
我有一个本地服务器-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());
}
}