【问题标题】:Java Outprinting Large File Line By LineJava 逐行输出大文件
【发布时间】:2015-02-22 00:23:52
【问题描述】:

每次我做类似的事情

BufferedReader br = new BufferedReader(new FileReader(f));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();

它不会逐行打印。相反,它会延迟 2-3 秒,然后立即显示出来。我已经尝试过使用 sleep 方法等。我怎样才能让它花时间并通过每一个方法,而不是一次滞后并吐出所有方法?

【问题讨论】:

  • 你的文件内容是什么?给出一些示例输出
  • 你确定文件有换行符吗?在编辑器中使窗口变大并且行不应重新格式化。在 Linux 或 OS X 中运行 'cat | od -c' 查看 \r\n(windows 换行符)或 \n(*nix 换行符)
  • 哦,不同换行符的组合也会导致您描述的问题。

标签: java string out


【解决方案1】:

尝试将行发送到数组列表。查看 arraylist 是否包含每一行。然后尝试将数组列表逐块迭代到网站。

BufferedReader br = new BufferedReader(new FileReader(f));
ArrayList<String> list = new ArrayList<String>();

        String line;
        while ((line = br.readLine()) != null) {
            list.add(line); 
        }
        br.close();

       for(String one_line: list){
        //send lines to website: 
        //sendLine(one_line);
        }

【讨论】:

    【解决方案2】:

    这可能是因为您的文件在每行末尾没有回车符。因此,它将整个文件视为一行。

    【讨论】:

    • 不是这样,因为我在为每一行运行 voids
    • @Master 什么意思?
    • @haley 假设我有一个 void 对每一行做其他事情。就像网站验证每一行一样。我现在就让它这样做,但它最终会滞后并一次完成。他们的方式不是按行执行,然后等待并按行执行,因此它在显示屏上显示为这样。 . . .而不是 暂停 .....
    • 文件有多大?我无法复制这个问题。
    【解决方案3】:

    尝试刷新输出。

    System.out.flush();
    

    在每个 System.out.println 之后

    【讨论】:

    • 如果它不超过它怎么办?如果我只是为每一行运行 voids 怎么办
    • 你所说的“运行空白”是什么意思?该文件是带有一堆新行的空文件吗?
    • 对于文件中的每一行,我将其发送到网站进行授权。它超过了每个授权。而不是打印然后暂停而不是打印。它滞后 2-3 秒,然后超过每一件事
    • 那么你需要改变你的问题,因为你显然没有在做 System.out.println。
    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2018-02-17
    • 2020-04-08
    • 2020-03-10
    • 2013-12-26
    • 2019-10-05
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多