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 + "%");
}
抱歉问题不完整。
答案 0 :(得分:1)
如API中所述,您应该写:
long bytes = fch.transferFrom(rbc, 0, Long.MAX_VALUE);
然后,bytes
将包含实际传输的字节数(注意:这可以为零)。
修改强>
transferFrom()
是一个操作系统级别的函数,因此无法直接从FileChannel
类进行监控。
This SO answer似乎有一个很好的方法 - 包装ReadableByteChannel
类来监控read()
调用。