2017-01-27 3 views
0

長いパラメータを使用してArrays.copyOfRangeを使用してバイト配列をカットする方法はありますか?Arrays.copyOfRange(byte []、long、long)? Javaで

編集:私は(バイト[]の長さ)ファイルの最後までのバイトインデックスからファイル(2GBより大きくない)を切断する必要が

int size = f.length() 

例外: 互換性のない型:長いから可能な非可逆変換を (ファイルが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をintにInteger.MAX_VALUE(= 2^32 -1)の長さに限定されます。 longの必要はありません。

要するに、そうする必要はないからです。

Arrays.length()は整数なので簡単に見ることができます。

関連する問題