大家好我有一个本地file,看起来像这样:
AAA Anaa
AAC EL-ARISH
AAE Annaba
AAF APALACHICOLA MUNI AIRPORT
AAG ARAPOTI
AAL Aalborg Airport
AAM Mala Mala
AAN Al Ain
AAQ Anapa
AAR Aarhus Tirstrup Airport
AAT Altay
AAX Araxa
AAY Al Ghaydah
...
Java Tutorials建议通过java.io.File.length
估算文件中的行数
并将结果除以50。
但是,是否有更“坚实”的方法来获取文本文件中的行数(但无需支付读取整个文件的开销)?
答案 0 :(得分:8)
你不能只用FileReader
读取文件并计算读取的行数吗?
int lines = 0;
BufferedReader br = new BufferedReader(new FileReader("foo.in"));
while (br.readLine != null) {
lines++;
}
答案 1 :(得分:2)
您获得的估算算法的好处是它非常快:一个stat(2)
调用然后一些除法。无论文件有多大或多小,它都需要相同的时间和内存。但是,对于大量的投入来说,这也是非常错误的。
获取特定数字的最佳方法可能是实际读取整个文件以查找'\n'
个字符。如果你用大的二进制块读取文件(想想16384字节或更大的2的幂)并查找你感兴趣的特定字节,它可以接近磁盘IO带宽。
答案 2 :(得分:1)
您需要使用BufferedReader
和counter
为每个readLine()增加值1。