6

我正在运行一个程序,它需要随机访问一个非常大的文件(大约 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 的戴尔计算机上测试了这段代码,但没有遇到这个问题。

4

1 回答 1

1

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

于 2011-01-10T18:59:29.853 回答