我正在运行一个程序,它需要随机访问一个非常大的文件(大约 151 GB)。我发现每当它在 Orchard 实验室的一台 MacPro 机器上运行时(详情请见http://inst.eecs.berkeley.edu/cgi-bin/clients.cgi?choice=6a&string=),程序都会尝试读取文件的特定部分并因文件系统错误而崩溃:
java.io.IOException: Invalid argument
at java.io.RandomAccessFile.readBytes(Native Method)
at java.io.RandomAccessFile.read(RandomAccessFile.java:322)
我只是使用 RandomAccessFile 类。
RandomAccessFile fd;
//...Initialized and already used fd with
//no problems for larger locations as well
//location == 155587178230
//numBytes == 15492560
//off == 0
//arr.length == 15492560
fd.seek(location);
fd.read(arr, off, numBytes);
无论我使用哪台 Orchard 实验室计算机,每次都会在相同的确切位置发生相同的确切字节范围。
我已经在运行 Debian Linux 的戴尔计算机上测试了这段代码,但没有遇到这个问题。