私は Scala で MappedByteBuffer を使用しています (ただし、この質問は Java にも関連しています) 約 400MB のファイルを開きます。コード スニペットを次に示します。
val file = new java.io.File( ... )
val stream = new java.io.FileInputStream( file )
val buffer = stream.getChannel.map(java.nio.channels.FileChannel.MapMode.READ_ONLY, 0, file.length )
ただし、これは次のエラーで失敗します。
java.io.IOException: Channel not open for writing - cannot extend file to required size
私が読んだところによると、最大 2GB のファイルをマップできるはずです。JVM 設定に関しては、-Xmx4G が設定されているため、ファイルを開けない理由がわかりません。テストとして、ファイルの小さなセクション (~1mb) をマップしましたが、これは正しく機能しました。
誰にもアイデアはありますか?