2012-04-15 8 views
0

ファイルの特定のポイントから特定のバイト数のファイルを読み込もうとしています。 _offsetと_sizeタイプは "長い" ですJavaのRandomAccessFileを使用してファイルから「長い」バイト数を読み取る方法

RandomAccessFile randomAccessFile = new RandomAccessFile(_file, "r"); randomAccessFile.seek(_offSet);
randomAccessFile.read(buffer, 0, _size);

問題は、読み込みメソッドが "int"しか使用しないことです。 "seek"を使ってオフセットの問題を克服しましたが、読み込むバイト数をどのように克服できますか?

+0

実際には20億バイト以上の読み込みを計画していますか? –

+0

...それは1回の呼び出しでなければなりませんか? ;) –

答えて

1

複数のコールを使用して2GB以上を読み取ることはできますが、2GB以上を一度に読み取ることはできません(シンプルさを除く)。

+0

2^31-1以上の要素をJavaの配列に収めることさえできません。 –

+0

またはByteBufferでも、コレクションまたは配列内の複数のbyte []またはByteBufferを読み取ることができます。 –

+0

私は、公正であるように、内部的に複数のByteBufferまたは配列を使用するカスタムリストまたはバッファ実装を設計することはできますが、 'long'sでインデックスできるAPIを公開します。 –

0

あなたはどこにそれらを読んでいますか?とにかく大きな配列を宣言することはできません。あなたの問題は存在しません。

+0

私はそれをいくつかの配列に読み込む予定です。 – choppy

+0

@choppy違いはありません。各配列はJavaによって2^31バイト、つまり最大整数に制限されているので、同じ制限値を持つ 'read()'はまだ問題にはなりません。 – EJP

関連する問題