gpt4 book ai didi

java - bufferedreader - 读入 stringbuffer 而不是 string

转载 作者:行者123 更新时间:2023-11-29 08:00:35 26 4
gpt4 key购买 nike

我有以下代码。我想做的是将 BufferedReader 中的每一行直接读入 StringBuffer 以减少内存开销。一旦它到达数据流的末尾,我希望它退出 while 循环。

StringBuffer line = new StringBuffer();
URL url = new URL("a url");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
int count = 0;
while(line.append(reader.readLine()) != null){
System.out.println(line.toString());
line.delete(0,line.length());
}

它可以很好地读取流,但是当我到达流的末尾时,它返回 null 并在不退出循环的情况下继续打印 null。任何

最佳答案

这个 while(line.append(reader.readLine()) != null) 基本上和说 while(line.append(reader.readLine()).toString () != null) 这永远不可能发生。

您可能遇到的另一个问题是,null 实际上被翻译成 "null" 的文字 String。这就是它打印“null”的原因,该值实际上不是 null - 还很困惑......

相反,尝试类似...

String text = null;
while((text = reader.readLine()) != null){
line.append(text)
System.out.println(line.toString());
line.delete(0,line.length());
}

已更新

虽然我在这里,但我可能会建议您实际上并没有为自己保存任何东西。

readLine 将创建 String 对象,您将其放入 StringBuffer 中。您实际上并没有节省任何内存,而是使过程复杂化。

如果您真的担心在内存中创建大量 String 对象,请改用 BufferedReader#read(char[])。将生成的字符数组附加到 StringBuffer

此外,除非您需要同步访问 StringBuffer,否则请改用 StringBuilder,它会更快。

关于java - bufferedreader - 读入 stringbuffer 而不是 string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com