2010-02-09 1 views
10

In Java bedeutet byte[] st = new byte[4096], dass die Größe des Arrays st 4096 Bytes nicht überschreiten wird.Kann ich die Größe eines Arrays in Scala begrenzen?

Das Scala-Äquivalent ist st:Array[byte] = Array(), wobei die Größe unbekannt ist. Wenn ich eine riesige Datei in dieses Array lese, wie kann ich dann die Größe des Arrays begrenzen?

Gibt es irgendwelche Nebeneffekte, wenn mir die Größe für den obigen Vorgang egal ist?

Antwort

27
var buffer = new Array[Byte](4 * 1024) 

Funktioniert gut, und es verhält sich wie erwartet.

9

Sie Java-Beispiel nicht produziert ein Array mit einer oberen Grenze von seiner Größe, erzeugt es ein Array mit genau der angegebenen Größe, die während der gesamten Lebensdauer festgelegt ist. Scala-Arrays sind in dieser Hinsicht identisch. Darüber hinaus folgt aus:

val st: Array[Byte] = Array() 

weist ein Array von Byte ("Byte" in Java) mit der Länge 0.

Soweit eine Datei in ein Array zu lesen, wenn Sie die gesamte Datei bearbeiten müssen, dann Versuchen Sie, den erforderlichen Speicherplatz zuzuweisen, und wenn dies fehlschlägt, können Sie nicht fortfahren.