2017-01-27 6 views
0

Как я могу «вырезать» массив байтов, используя Arrays.copyOfRange с длинными параметрами?Arrays.copyOfRange (байт [], длинный, длинный)? в Java

EDIT: Я нужно сократить файл (не больше, чем 2 Гб) от индекса байта до конца файла (байты [] длина.)

int size = f.length() 

броски: несовместимых типов: возможные потерь преобразования из длинных в Int (даже если файл 600Kb)

File f = new File("path-to-file"); 
byte[] bytes = Files.readAllBytes(f.toPath()); 

long indexToCutFrom = a_long_number; 
long indexToCutTo = f.length() - 1; 

// method with these parameters does not exists 
byte[] cuttedBytes = Arrays.copyOfRange(bytes, indexToCutFrom, indexToCutTo); 
+2

Как у вас есть массив с более чем элементами Integer.MAX_VALUE? – bradimus

+1

Массивы ограничены длиной 'Integer.MAX_VALUE', поэтому 2^32 -1. Здесь не нужно «долго». Короче говоря, вы не можете, потому что вам не нужно – AxelH

+0

@bradimus есть 'Unsafe', который может это сделать – Eugene

ответ

0

Arrays ограничены длиной Integer.MAX_VALUE (= 2^32 -1). Нет необходимости в long.

Короче говоря, вы не можете, потому что вам это не нужно.

Вы можете видеть это просто потому, что Arrays.length() является целым числом.