java - 从 InputStreamReader (JAVA) 读取多行

标签 java string inputstream

我有一个 InputStreamReader 对象。我想使用一个函数调用将多行读入缓冲区/数组(无需创建大量字符串对象)。有没有简单的方法可以做到这一点?

最佳答案

首先请注意,InputStreamReader 效率不高,您应该将其包裹在 BufferedReader 对象中以获得最佳性能。

考虑到这一点,你可以这样做:

public String readLines(InputStreamReader in)
{
  BufferedReader br = new BufferedReader(in);
  // you should estimate buffer size
  StringBuffer sb = new StringBuffer(5000);

  try
  {
    int linesPerRead = 100;
    for (int i = 0; i < linesPerRead; ++i)
    {
      sb.append(br.readLine());
      // placing newlines back because readLine() removes them
      sb.append('\n');
    }
  }
  catch (Exception e)
  {
    e.printStackTrace();
  }

  return sb.toString();
}

请注意 readLine() 返回 nullEOF 到达,因此您应该检查并处理它。

关于java - 从 InputStreamReader (JAVA) 读取多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434551/

相关文章:

java - 如何重构执行类似操作的 if-else 主体?

java - 如何使用递归循环从 char[] 数组返回字符串。(java)

java - 通过\\分割字符串

Java:将字符串发送到输入流

java - 将流转换为字符串 block ,反之亦然

java - 将 module-info.java 添加到项目会导致 lombok 错误

java - Listview 显示垃圾值

java - Linux 上的 JSCH 抛出 java.awt.HeadlessException

string - 在空格处拆分字符串,引号内除外

c# - 我的自定义InputStream 和outputStream 对象可以在C# HTTP 程序中工作吗?