Java逐行输出大文件

3

每当我做类似以下操作时

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

它不会逐行输出,而是会延迟2-3秒然后一次性显示全部内容。我尝试过使用sleep方法等,但如何让它按顺序逐个输出而非一次性延迟并输出呢?


你的文件包含什么内容?请给出一些示例输出。 - varun
你确定文件有换行符吗?在编辑器中将窗口放大,行就不应该重新格式化。在Linux或OS X中运行“cat <file> | od -c”以查看\r\n(Windows换行符)或\n(*nix换行符)。 - HankCa
哦,不同的换行符组合也会导致像你描述的问题。 - HankCa
3个回答

4
尝试刷新输出。
System.out.flush();

在每个System.out.println之后

如果不是要输出它怎么办?如果我只是为每行运行voids呢? - Andre
“running voids” 是什么意思?这个文件是一个带有大量换行符的空文件吗? - hofan41
对于我发送到网站进行授权的每一行文件,它都会输出每个授权。它不是先输出再暂停,然后再输出。它会有2-3秒的延迟,然后一次性输出所有内容。 - Andre
1
那么您需要更改您的问题,因为显然您没有使用System.out.println。 - hofan41

2

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


这并不是问题,因为我正在为每一行运行void函数。 - Andre
@Master 你是什么意思? - haley
@haley 假设我有一个void,它会对每一行做其他事情。比如说,对于每一行,一个网站验证这一行。我现在已经让它这样做了,但最终导致它全部同时进行,从而出现延迟。难道没有一种方法可以按行进行处理,然后等待,并按行进行处理,以便在显示器上显示如下内容. . . . 而不是 暂停 ..... - Andre
文件有多大?我无法复制这个问题。 - haley

0

尝试将这些行发送到一个数组列表中。查看数组列表是否包含每一行。然后尝试通过逐个网站块来迭代数组列表。

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);
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接