При загрузке файла с URL-адреса, почему мы читаем в байтовом массиве? - PullRequest
0 голосов
/ 16 апреля 2020

Почему мы читаем в байтовый массив при загрузке файла с URL? В приведенном ниже коде создается байтовый массив («данные»), которому присваивается номер «1024» и который передается в качестве параметра в приведенном ниже фрагменте кода

while ((x = in.read(data, 0, 1024)) >= 0)

Не могли бы вы объяснить, что » чтение "в байтовый массив означает? Кроме того, почему были переданы "0" и "1024"?

Этот код был взят из Java получения прогресса загрузки

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;

1 Ответ

0 голосов
/ 16 апреля 2020

Не могли бы вы объяснить, что означает "чтение" в байтовом массиве?

Когда мы читаем данные в байтовый массив, мы имеем в виду, что мы храним данные из входного потока в массив для последующего использования. Мы читаем данные в байтовый массив вместо массива char или массива int, потому что это двоичные данные. Это может быть текст, картинка или видео. В конце концов, это все двоичные данные, которые мы храним в байтах.

Кроме того, почему также были переданы "0" и "1024"?

В документации для read() говорится, что он принимает 3 аргумента:

b - буфер назначения.

off - смещение, с которого начинается сохранение байтов.

len - максимальное количество байтов для чтения.

Таким образом, 0 - это «смещение», при котором операция чтения начнет сохранять байты. 1024 - это количество байтов для чтения. Это могут быть любые разумные числа до тех пор, пока вы не попытаетесь прочитать данные за концом массива.

...