gpt4 book ai didi

java - 使用 Java 找出文件中有多少非空行的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-01 06:30:21 26 4
gpt4 key购买 nike

使用 Java 找出文件中有多少非空行的最快方法是什么?

最佳答案

最简单的方法是使用 BufferedReader,并检查哪些行是空的。然而,这是一种相对较慢的方法,因为它需要为文件中的每一行创建一个 String 对象。更快的方法是使用 read() 将文件读入数组,然后迭代数组以计算换行符。

这是两个选项的代码;第二个在我的机器上花费了大约 50% 的时间。

public static void timeBufferedReader () throws IOException
{
long bef = System.currentTimeMillis ();

// The reader buffer size is the same as the array size I use in the other function
BufferedReader reader = new BufferedReader(new FileReader("test.txt"), 1024 * 10);
int counter = 0;
while (reader.ready())
{
if (reader.readLine().length() > 0)
counter++;
}

long after = System.currentTimeMillis() - bef;

System.out.println("Time: " + after + " Result: " + counter);

}

public static void timeFileReader () throws IOException
{
long bef = System.currentTimeMillis();

FileReader reader = new FileReader("test.txt");
char[] buf = new char[1024 * 10];
boolean emptyLine = true;
int counter = 0;
while (reader.ready())
{
int len = reader.read(buf,0,buf.length);
for (int i = 0; i < len; i++)
{
if (buf[i] == '\r' || buf[i] == '\n')
{
if (!emptyLine)
{
counter += 1;
emptyLine = true;
}
}
else emptyLine = false;
}
}

long after = System.currentTimeMillis() - bef;

System.out.println("Time: " + after + " Result: " + counter);

}

关于java - 使用 Java 找出文件中有多少非空行的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/688431/

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