В Java byte[] st = new byte[4096]
, подразумевает тот размер массива st
не превысит 4 096 байтов.
Эквивалентный Scala st:Array[byte] = Array()
где размер неизвестен. Если я читаю огромный файл в этот массив, то, как я могу ограничить размер массива?
Будет какой-либо побочный эффект, если я не буду заботиться о размере о вышеупомянутой операции?
var buffer = new Array[Byte](4 * 1024)
Работает просто отлично, и ведет себя, как и ожидалось.
В вашем примере Java не создается массив с верхней границей его размера, он создает массив с точно указанным размером, который фиксируется на протяжении всего срока его службы. . В этом отношении массивы Scala идентичны. Кроме того, это:
val st: Array[Byte] = Array()
выделяет массив байтов («байт» в Java) длины 0.
Что касается чтения файла в массив, если вы должны обработать весь файл, затем попытайтесь выделить необходимое пространство, и если это не удастся, вы не сможете продолжить.