2017-02-27 1 views
0

Selbsterklärender Titel, was ist das int von der Android-Website, was macht es und warum brauche ich es? Ich verstehe, erstes und zweites Argument von bytearrayoutputstream.write aber nicht diesenAndroid ByteArrayOutputStream.write - "int off" -Argument, was ist

aus dem Android web: Output Zusammenfassung

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

Schreibt len ​​Bytes aus dem angegebenen Byte-Array, beginnend bei Offset off zu diesem Ausgangsstrom.

Beispielcode:

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(); 
    } 

Antwort

1

off ist die Abkürzung für "Offset", das heißt, den Index Kopieren von zu starten. In Kombination mit len (oder "length") können Sie eine beliebige Teilsequenz anstelle des gesamten Quell-Arrays kopieren. Zum Beispiel:

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] 
Verwandte Themen