例如,
Channels.newChannel(url.openStream());
这一行打开流并从中获取数据,但我无法找到它的进度。
有没有办法这样做?
例如,
Channels.newChannel(url.openStream());
这一行打开流并从中获取数据,但我无法找到它的进度。
有没有办法这样做?
使用transferFrom()
ortransferTo()
方法时,您必须传递文件内的起点,以及要传输的字节数。
您可以做的是将文件分解为 100 个“部分”。这很简单:
File f = new File(url);
int size = f.length();
假设我们的文件大小为 100KB,那么现在大小为 102400。只需将其除以“部分”的数量(在本例中为 100),每个“部分”就有 1024 个字节。现在我们要做的就是显示我们已经转移的“部分”的百分比。
举个例子
int pos = 0;
for(int x = 0 ; x < 100 /*amount of parts*/ ; x++) {
source.transferTo(0*x, 1024 /*part size*/, destination);
progress.setValue(x/100 /*amount of parts*/ *100);
}
这一行打开流并从中获取数据
不,它不会,直到你.read()
从它。所以...
有没有办法这样做?
就在这里。你在.read(buf)
哪里。buf
ByteBuffer
只需抓住那个缓冲区的.position()
.
(并注意Channels.newChannel(InputStream)
不会返回 aFileChannel
而是 a ReadableByteChannel
)