2013-12-23 7 views
5

In Java-Eingangs- oder Ausgangsstrom, hat es immer eine Byte-Array-Größe von 1024. Genau wie unten:Warum beim Lesen oder Schreiben einer Datei das Byte-Array auf 1024 initialisieren?

 URL url = new URL(src); 
     URLConnection connection = url.openConnection(); 
     InputStream is = connection.getInputStream(); 
     OutputStream os = new FileOutputStream("D:\\images"+"\\"+getName(src)+getExtension(src)); 
     byte[] byteArray = new byte[1024]; 
     int len = 0; 
     while((len = is.read(byteArray))!= -1){ 
      os.write(byteArray, 0, len); 
     } 
     is.close(); 
     os.close(); 

Warum 1024 dieses Array initialisieren?

+1

Eine einfache Suche gab mir http://stackoverflow.com/questions/6557799/why-initialize-this-byte-array-to-1024 –

Antwort

6

Dies wird als Pufferung bezeichnet und jedes Mal, wenn Sie den Inhalt des Puffers bei jedem Durchlauf der Schleife überschreiben.

Einfach Datei in Chunks lesen, anstatt Speicher für den Dateiinhalt auf einmal zuzuweisen.

Grund hierfür ist, dass Sie ein eindeutiges Opfer von OutOfMemoryException werden, wenn die Datei zu groß ist.

Und zu der spezifischen Frage, das ist nicht 1024, auch Sie können mit 500 zu tun. Aber ein Minimum 1024 ist eine häufige Verwendung.

Verwandte Themen