我正在使用 java 读取大小为 4gb 的 TSV 文件,我想知道 java 是否有办法告诉我在程序运行时它通过任务的距离。我在想文件流可能能够告诉我它读取了多少字节,我可以用它做一些简单的数学运算。
问问题
1029 次
3 回答
4
普通流或阅读器不计算读取的字节数/字符数。
我想你可能正在寻找ProgressMonitorInputStream
.
如果您不想要/不需要 Swing 集成,那么另一种选择是编写 FilterReader 或 FilterInputStream 的自定义子类,它计算读取的字符/字节并提供读取计数的 getter。然后将自定义类放入您的输入堆栈中的适当位置。
于 2012-06-25T04:03:37.583 回答
2
当您从流中读取时,请记录读取的字节数。例如,如果您直接从流中读取字节数组:
long bytesReadTotal = 0L;
int bytesRead = stream.read(bytes);
while (bytesRead != -1) {
bytesReadTotal += bytesRead;
// process these bytes ...
bytesRead = stream.read(bytes)
}
于 2012-06-25T03:46:58.270 回答
0
如果你通过 HTTP 读取这个文件,有一个名为“Content-Length”的 header 可以告诉你应该读取的总字节数,然后你就知道你正在阅读的进度。
如果你通过TCP/UDP读取文件,我猜你应该同时写客户端和服务器进行文件传输,那么你应该先将文件长度发送给客户端,然后读取文件。
如果你只是读取本地文件,这不是问题。
于 2012-06-25T03:52:26.397 回答