6

非常に大きなファイル (約 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 コンピュータでこのコードをテストしましたが、この問題はありませんでした。

4

1 に答える 1

1

指定された場所でファイルが本当に読み取り可能かどうかを確認するには、Linux コマンド「dd」を使用する必要があります。ファイルは MAC ラボのネットワーク ドライブ上にあると仮定します。Dell のディスクは壊れていないため、Dell Linux ワークステーション上のファイルのコピーにアクセスしても、このエラーは発生しません。

于 2011-01-10T18:59:29.853 に答える