2017-01-27 4 views
0

Wie kann ich Byte-Array mit Arrays.copyOfRange mit langen Parametern 'schneiden'?Arrays.copyOfRange (byte [], lang, lang)? in Java

EDIT: Ich brauche

int size = f.length() 

wirft zu schneiden Datei (nicht größer als 2 GB) vom Byte-Index bis zum Ende der Datei (byte [] Länge.): inkompatible Typen: mögliche verlustbehaftete Umwandlung von lang int (auch wenn die Datei 600kB ist)

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

Wie haben Sie ein Array mit mehr als 'Integer.MAX_VALUE' Elementen? – bradimus

+1

Arrays sind auf eine Länge von "Integer.MAX_VALUE" begrenzt, also 2^32 -1. Keine Notwendigkeit von "lang" hier. Kurz gesagt, Sie können nicht, weil Sie nicht brauchen – AxelH

+0

@bradimus gibt es 'Unsafe', die das tun können – Eugene

Antwort

0

Arrays sind auf eine Länge von Integer.MAX_VALUE begrenzt (= 2^32 -1). Keine Notwendigkeit von long.

Kurz gesagt, können Sie nicht, weil Sie nicht müssen.

Sie können es einfach sehen, weil Arrays.length() eine ganze Zahl ist.

Verwandte Themen