Reputation: 142
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);
I debugged it and reaches the next line of code after the download is completed.
How can I get the number of bytes that transferFrom()
wrote during it's writing a file, to write it to a log or to the console?
Something like this
while (len = fch.getWriteBytes()) {
System.out.println(len + " bytes : " + (len/total)*100 + "%");
}
Sorry for incomplete question.
Upvotes: 0
Views: 393
Reputation: 5869
As describe in the API, you should write:
long bytes = fch.transferFrom(rbc, 0, Long.MAX_VALUE);
Then, bytes
will contain the number of bytes actually transferred (note: this can be zero).
EDIT:
The transferFrom()
is an OS-level function and therefore can't really be monitored directly from the FileChannel
class.
This SO answer seems to have a good approach - wrapping the ReadableByteChannel
class to monitor the read()
calls.
Upvotes: 1