java.io.RandomAccessFile mac上的大文件的无效参数

dsp*_*pyz 6 java macos file-io random-access large-files

我正在运行一个需要随机访问一个非常大的文件(大约151千兆字节)的程序.我发现无论何时它在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)
Run Code Online (Sandbox Code Playgroud)

我只是使用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);
Run Code Online (Sandbox Code Playgroud)

无论我使用哪种Orchard实验室计算机,每次都在相同的确切字节范围内发生它.

我在运行Debian Linux的DELL计算机上测试了这段代码而没有遇到这个问题.

Dan*_*iel 1

您应该使用 Linux 命令“dd”来检查文件在给定位置是否确实可读。我假设该文件位于 MAC 实验室的网络驱动器上,如果您在 Dell Linux 工作站上访问该文件的副本,则不会收到此错误,因为 DELL 磁盘没有损坏。