Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.io.RandomAccessFile Invalid Argument for large files on mac

I'm running a program which needs random access to a very large file (approximately 151 gigabytes). I've found that whenever it runs on one of the MacPro machines in the Orchard lab ( details at http://inst.eecs.berkeley.edu/cgi-bin/clients.cgi?choice=6a&string= ), the program tries to read a specific part of the file and crashes with an error from the file system:

java.io.IOException: Invalid argument
    at java.io.RandomAccessFile.readBytes(Native Method)
    at java.io.RandomAccessFile.read(RandomAccessFile.java:322)

I'm just using the RandomAccessFile class.

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);

It happens in the same exact place for the same exact range of bytes every time no matter which of the Orchard lab computers I use.

I've tested this code on DELL computers running Debian Linux and not had this problem.

like image 949
dspyz Avatar asked Dec 05 '10 20:12

dspyz


1 Answers

You should use the linux command "dd" to check if the file is really readable at the given location. I assume the file is on a network drive in the MAC lab, and if you access your copy of the file on the Dell linux workstation you won't get this error because DELLs disks are not broken.

like image 145
Daniel Avatar answered Oct 04 '22 01:10

Daniel