当从URL下载文件时,为什么我们要读入字节数组?

问题描述 投票:0回答:1

为什么从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;
java arrays http url inputstream
1个回答
0
投票

您能解释一下“读取”到字节数组的含义吗?

当我们将数据读入字节数组时,是指将输入流中的数据存储到数组中以备后用。我们将数据读入字节数组而不是char数组或int数组,因为它是二进制数据。它可能是文本,图片或视频。归根结底,这些都是我们以字节为单位存储的二进制数据。

而且,为什么还要传递“ 0”和“ 1024”?

The documentation for read()表示需要3个参数:

b-目标缓冲区。

off-开始存储字节的偏移量。

len-读取的最大字节数。

因此read()是“偏移量”,读取操作将开始存储字节。 0是要读取的字节数。这些可以是任何有意义的数字,只要您不尝试读取数组末尾以外的位置即可。

© www.soinside.com 2019 - 2024. All rights reserved.