我在 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),它工作正常。
有没有人有任何想法?