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
类进行监视。This SO answer似乎是一种好方法-包装
ReadableByteChannel
类以监视read()
调用。