从InputStreamReader(JAVA)读取多行

时间:2010-03-12 17:26:57

标签: java string inputstream

我有一个InputStreamReader对象。我想使用一个函数调用将多行读入缓冲区/数组(不包括大量的字符串对象)。有一种简单的方法吗?

2 个答案:

答案 0 :(得分:3)

首先要注意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()返回null已达到EOF,因此您应该检查并处理它。

答案 1 :(得分:0)

如果您有多行的分隔符,则可以使用带有长度和偏移量的read方法读取许多字符。否则使用StringBuilder附加BufferedReader读取的每一行应该对你有用,而不会占用太多的临时内存