gpt4 book ai didi

java - 如何在不重新实例化 Bufferedreader 的情况下返回到文件的第一行?

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:19 26 4
gpt4 key购买 nike

        for(String column: columnHeaders){

loadFile(); // Here BufferedReader gets instantiated

String header =getLineReader().readLine();

if(header!=null)
{
while (( line=getLineReader().readLine())!=null )
{
cellValue =StatUtils.getCellValue(line,getColumnNumberByName(column));

csvColumn.addRowElement(cellValue,null);
}

}

closeStreams(); // closing the Reader
}

对于每一列,我都需要从头到尾读取 csv 文件。文本文件可能非常大(100 列和 5000000 行)。

现在,为每列创建一个 BufferedReader 实例 -1)这会影响性能吗?2)有没有办法创建一次Reader,每当它到达最后一行时,在下一次迭代中,它将从头开始......

正如我所说,该文件可能非常大,因此,我不想将其缓存到内存中。

有什么建议/意见吗?

提前致谢。

最佳答案

与重新读取整个“非常大”文件的成本相比,为每列创建新的 BufferedReader 的成本可以忽略不计。

每当您担心性能时,您应该采取的第一步就是衡量。您当前的实现实际上是否比您希望的要慢?如果它看起来足够快,那就别管它。

如果事实证明它比您想要的要慢,那么“优化”的最佳方法是读取文件一次,而不是为您关心的每一列读取一次。您可以使用列名称的 Map 到“列处理器”,而不是采用单个列名称。每个“列处理器”都会为其列提供连续的值,并计算它应该计算的任何内容(例如:总和、平均值、平方和,甚至只是将值存储在集合中)。

关于java - 如何在不重新实例化 Bufferedreader 的情况下返回到文件的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671262/

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