为什么从URL下载文件时为什么要读入字节数组?在下面的代码中,创建了一个字节数组(“数据”),该数组分配了一个数字“ 1024”,并作为参数传递给下面的代码]
while ((x = in.read(data, 0, 1024)) >= 0)
您能解释一下“读”到字节数组的含义吗?另外,为什么还要传递“ 0”和“ 1024”?
此代码取自Java getting download progress
URL url = new URL("http://downloads.sourceforge.net/project/bitcoin/Bitcoin/blockchain/bitcoin_blockchain_170000.zip");
HttpURLConnection httpConnection = (HttpURLConnection) (url.openConnection());
long completeFileSize = httpConnection.getContentLength();
java.io.BufferedInputStream in = new java.io.BufferedInputStream(httpConnection.getInputStream());
java.io.FileOutputStream fos = new java.io.FileOutputStream(
"package.zip");
java.io.BufferedOutputStream bout = new BufferedOutputStream(
fos, 1024);
byte[] data = new byte[1024];
long downloadedFileSize = 0;
int x = 0;
while ((x = in.read(data, 0, 1024)) >= 0) {
downloadedFileSize += x;
您能解释一下“读取”到字节数组的含义吗?
当我们将数据读入字节数组时,是指将输入流中的数据存储到数组中以备后用。我们将数据读入字节数组而不是char数组或int数组,因为它是二进制数据。它可能是文本,图片或视频。归根结底,这些都是我们以字节为单位存储的二进制数据。
而且,为什么还要传递“ 0”和“ 1024”?
The documentation for read()
表示需要3个参数:
b-目标缓冲区。
off-开始存储字节的偏移量。
len-读取的最大字节数。
因此read()
是“偏移量”,读取操作将开始存储字节。 0
是要读取的字节数。这些可以是任何有意义的数字,只要您不尝试读取数组末尾以外的位置即可。