Я запускаю программу, которой нужен произвольный доступ к очень большому файлу (примерно 151 гигабайт). Я обнаружил, что всякий раз, когда он запускается на одном из компьютеров MacPro в лаборатории Orchard (подробности на 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 я использую.
Я тестировал этот код на компьютерах DELL под управлением Debian Linux, и у меня не было этой проблемы.