首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BufferedReader.readLine()读取文本文件太慢

使用BufferedReader.readLine()读取文本文件太慢
EN

Stack Overflow用户
提问于 2013-05-29 15:28:40
回答 6查看 3K关注 0票数 3

我正在尝试读取一个包含大约1000个非常长的行的文本文件。整个文件大小约为1.4MB。我正在使用BufferedReader的readLine方法读取文件。在控制台上打印输出需要8-10秒。我用php的fgets尝试了同样的方法,它一眨眼的功夫就打印出了所有相同的行!这怎么可能呢?下面是我使用的代码

代码语言:javascript
复制
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ClickLogDataImporter {
    public static void main(String [] args) {
        try {
            new ClickLogDataImporter().getFileData();
        } catch (Exception ex) {
            Logger.getLogger(ClickLogDataImporter.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void getFileData() throws FileNotFoundException, IOException {
        String path = "/home/shantanu/Documents";
        BufferedReader br = new BufferedReader(new InputStreamReader(
                new FileInputStream(path+"/sample.txt")));
        String line = "";
        while((line = (br.readLine())) != null) {
            System.out.println(line);
        }

    }
}

PHP代码

代码语言:javascript
复制
<?php
    $fileName = "/home/shantanu/Documents/sample.txt";
    $file = fopen($fileName, 'r');
    while(($line = fgets($file)) != false) {
        echo $line."\n";
    }
?>

请给我讲讲这个问题。

EN

回答 6

Stack Overflow用户

发布于 2013-05-29 15:32:45

我不确定,但我认为PHP只是根据您使用的方法打印文件,Java读取文件并获取其中的每一行,这意味着检查每个字符是否有断行符,过程似乎完全不同。

代码语言:javascript
复制
string file_get_contents

如果您尝试用PHP逐行打印文件中的每一行,速度应该会更慢。

票数 0
EN

Stack Overflow用户

发布于 2013-05-29 15:36:30

8秒的代码对我来说听起来太长了。老实说,我怀疑还发生了什么事。你确定这不是控制台输出花了很长时间吗?

我建议你给它计时(例如,使用System.nanoTime),在最后写出总时间,但在运行时将控制台最小化。我想你会发现它已经足够快了。

票数 0
EN

Stack Overflow用户

发布于 2013-05-29 15:40:47

这难道不是控制台输出速度慢的原因吗?现在您知道您的文件已被正确读取,尝试注释掉行System.out.println(line);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16807928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档