0

を使用したファイル操作についてサポートが必要ですFileChannel。私の要件は、システムから大きなファイルを読み取ってから、ファイルを 1 行ずつチェックする必要があるということです。特定の文字列が見つかった場合は、新しい行を追加するか、ファイルから古い行を削除する必要があります。そして、データを保存する必要があります。

注意

  1. 一時ファイルの作成を回避しようとしています。
  2. FilChannelでやりたい
  3. また、読み取りと書き込みで単一のファイル チャネルを開くのも好きです。RandomAccessFileそのために、私はFileChannel.

これについて私を助けてください。

4

1 に答える 1

0

NIO は、1 つのスレッドで複数のソースから読み取りたい場合に利点があります。これの価格は、はるかに複雑でエラーが発生しやすい API です。ファイルが 1 つしかない場合は、 regular を使用しますFileInputStream。私が理解している限り、あなたはテキストファイルで作業しているので、ストリームを次のようにラップしますBufferedReader:

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(YOUR_FILE)));

次のポイントは、ファイルから特定の行を削除することです。ファイルは常にシーケンシャル構造であるため、これを「その場で」行うことはできません。ただし、ファイルを行ごとに読み取り、書き込みたくない行を無視して他のファイルに行を書き込むことができます。次に、古いファイルを削除し、一時ファイルの名前を変更します。何もする必要はありません: チャネルもランダム アクセス ファイルも、ファイルの途中から情報を削除することはできません。

于 2013-05-12T08:12:34.867 に答える