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