我有一个 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()
返回 null
是 EOF
到达,因此您应该检查并处理它。
关于java - 从 InputStreamReader (JAVA) 读取多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434551/