2

BufferedReaderこれは、 Javaを使用してファイルを読み取ることに関する私の理解です。どこか間違っていたら訂正お願いします...

最近、ファイルを複数回読み取る必要があるという要件がありました。

私が使用する通常の方法は、amark()を設定してリセットすることです。ただし、マークへの入力パラメータは整数であり、長い数値を受け入れることはできません。ファイルを何度も読み取る方法はありますか。

C++ では、必要な回数に関係なく、コンテンツのシークをもう一度行うことができfstreamますread。この性質のJavaには何かありますか。

4

2 に答える 2

3

ファイルを閉じて、もう一度読んでください。

ただし、要件を確認してください。なぜワンパスで処理できないのですか?

于 2013-05-29T11:22:32.350 に答える
1

あまり良い答えではありませんが、ランダムな読み取りと書き込みを行いたい場合はChannelsjava.nioパッケージで使用できます。

BufferedReaderファイルを一連のレコードとして論理的に見ると、ファイルを読み取るためのものであり、レコードは通常、順番にアクセスされます。
Channelファイルを一連のブロックとして表示できます。ブロックはランダムに読み取られることを意図しています。:)

チャネルのサブクラス を使用するとFileChannel、必要な場所から必要なものを読み取ることができます。次の 2 点を指定する必要があります。

  1. どこから読むか。
  2. どれだけ読むか。

read(dst,pstn)wheredstは aでByteBuffer、pstn はlong位置です。

それを機能させるために必要なすべてのブードゥーをabstract実行する経由で使用するためであることを心配しないでください:)Files.newByteChannel()

于 2013-05-29T11:08:17.527 に答える