非常に大きなファイル (約 151 ギガバイト) へのランダム アクセスが必要なプログラムを実行しています。Orchard ラボの MacPro マシン (詳細はhttp://inst.eecs.berkeley.edu/cgi-bin/clients.cgi?choice=6a&string=を参照) の 1 つで実行すると、プログラムはファイルの特定の部分を読み取り、ファイル システムからのエラーでクラッシュします。
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 を実行している DELL コンピュータでこのコードをテストしましたが、この問題はありませんでした。