Android ByteArrayOutputStream.write — аргумент int off, что такое

Название говорит само за себя, что такое int off на веб-сайте Android, что он делает и зачем мне это нужно? Я понимаю первый и второй аргумент из bytearrayoutputstream.write, но не этот

из Интернета Android: сводка OutputStream

void write(byte[] b, int off, int len)

Записывает len байтов из указанного массива байтов, начиная с смещения в этот выходной поток.

образец кода:

public byte[] getUrlBytes(String urlSpec) throws IOException {
    URL url = new URL(urlSpec);
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    try {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        InputStream in = connection.getInputStream();
        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
            throw new IOException(connection.getResponseMessage() +
                    ": with " +
                    urlSpec);
        }
        int bytesRead = 0;
        byte[] buffer = new byte[1024];
        while ((bytesRead = in.read(buffer)) > 0) {
            out.write(buffer, 0, bytesRead);
        }
        out.close();
        return out.toByteArray();
    } finally {
        connection.disconnect();
    }

person Community    schedule 27.02.2017    source источник


Ответы (1)


off — это сокращение от «смещение», что означает индекс, с которого начинается копирование. Это, в сочетании с len (или «длиной»), позволяет вам копировать произвольную подпоследовательность вместо всего исходного массива. Например:

byte[] array = {1,2,3,4};
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(array, 1, 2);    // copy 2 bytes from index 1
System.out.println(Arrays.toString(baos.toByteArray()));
// Output:
// [2, 3]
person shmosel    schedule 27.02.2017