2012-04-20 30 views
2

私はこのような複数の質問を検索して見ましたが、私の質問は私が見つけたものとはまったく異なります。私はJava Docsを見てきました。多くのバイトがあったかに関係なくJava 6ファイル入力出力ストリーム(同じファイル)

私は、ファイルからの部分的な読み取りを完了したら
stream1 = fopen (out_file, "r+b"); 

は、最初の書き込みは、次の読み出しリターンEOFを行います

は、どのように私はオープン、このCファイルと同等のものを取得しないでくださいファイル内にあります。

本質的に私はそれをしないファイルI/Oストリームが必要です。私がしようとしているのは、現在のファイル内の既存のファイルのバイトを置き換えることです。私は、コピーを作成したり、コピーを作成してから、「読み込み」 - >「書き込み」を実行します。

+0

あなたが見ているのは、書き込み時に書き込みがファイルの末尾に追加されるため、ファイルポインタがEOFにあることです。下記のようにRandomAccessFileを使用すると、ファイル内の位置を探してその場で書き込むことができます。バイトを置き換える場合は、置き換えようとしているバイト数よりも多少少ないバイトを書き込んでいて、置き換えた後のバイトをどのようにシフトさせるのかを処理する必要があることに注意してください。 –

答えて

1

パーセプションには、RandomAccessFileを使用できます。また、場合によってはFileChannelがうまくいくかもしれません。私はこれらを使ってバイナリファイルのデータを大成功に収めました。

EDIT:getChannelを使用してRandomAccessFileオブジェクトからFileChannelを取得できます。

+0

パーフェクト!ありがとう! – Jackie

関連する問題