文件读取进度

时间:2012-06-25 03:43:35

标签: java

我正在使用java来读取大小为4GB的TSV文件,我想知道java是否有办法告诉我程序运行时通过任务的距离。我想文件流可能能告诉我它读了多少字节,我可以做一些简单的数学运算。

3 个答案:

答案 0 :(得分:4)

普通流或读取器不计算读取的字节数/字符数。

我想你可能在寻找ProgressMonitorInputStream

如果您不想/需要Swing集成,那么另一种选择是 编写FilterReader或FilterInputStream的自定义子类,计算读取的字符/字节数,并提供读取计数的getter。然后在适当的位置将自定义类放入输入堆栈。

答案 1 :(得分:2)

从流中读取时,请保持读取的字节数。例如,如果直接从流中读取字节数组:

    long bytesReadTotal = 0L;
    int bytesRead = stream.read(bytes);
    while (bytesRead != -1) {
        bytesReadTotal += bytesRead;
        // process these bytes ...
        bytesRead = stream.read(bytes)
    }

答案 2 :(得分:0)

如果您通过HTTP读取此文件,则有一个名为“Content-Length”的标题可以告诉您应该读取的总字节数,然后您就会知道阅读时的进度。

如果你通过TCP / UDP读取文件,我想你应该写客户端和服务器进行文件传输,然后你应该首先将文件长度发送到客户端,然后读取文件。

如果您只是阅读本地文件,这不是问题。