繁体   English   中英

如何获取FileChannel.transferFrom在写入过程中写入的字节数

[英]How to get number of bytes that FileChannel.transferFrom wrote during it's writting

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
ReadableByteChannel rbc = Channels.newChannel(conn.getInputStream());   
FileOutputStream fos = new FileOutputStream(fileName);
FileChannel fch = fos.getChannel();
fch.transferFrom(rbc, 0, Long.MAX_VALUE);

我调试了它,下载完成后到达了下一行代码。 如何获得transferFrom()在写入文件期间写入的字节数,以将其写入日志或控制台?

像这样

while (len = fch.getWriteBytes()) {
 System.out.println(len + " bytes : " + (len/total)*100 + "%");
}

对不起,问题不完整。

API中所述,您应编写:

long bytes = fch.transferFrom(rbc, 0, Long.MAX_VALUE);

然后, bytes将包含实际传输的字节数(注意:这可以为零)。

编辑:

transferFrom()是操作系统级别的函数,因此实际上不能直接从FileChannel类进行监视。

这样的答案似乎是一种好方法-包装ReadableByteChannel类以监视read()调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM