所以我正在尝试使用映射的 FileChannel 读取一个非常大的文件。
文件超过 2GB。一段代码是:
long fileSize = 0x8FFFFFFFL;
FileChannel fc = new RandomAccessFile("blah.huge", "rw").getChannel();
fc.map(FileChannel.MapMode.READ_WRITE, 0, fileSize);
这会引发错误:
Exception in thread "main" java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUE
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:789)
FileChannel.map 将 along
作为文件大小。那么这个错误有意义吗?为什么他们不支持比这更大的文件?