0

同じインスタンス内または同じファイルハンドルを介してファイルの読み取りと書き込みができるようにしたい。私が言いたいのはこれです。次のようにファイルを開いたとします。

BinaryReader jfile := new BinaryReader(File.OpenRead('c:\jokes.dat'));

jfileハンドルを閉じずにファイルに書き込めるようにし、次にBinaryWriterを呼び出してファイルに書き込めるようにしたい。あなたはそれをすることができますか?

また、書き込むファイルを開くと、同じ名前の古いファイル内のデータはすべて完全に消去されます。本当?

私はあなたがfファイルハンドルを再割り当てする必要なしにFollowsとしてWin32のためにこれをすることができることを知っています。

Assignfile(f,fname);
Reset(f,1);
BlockRead(f,jokeA,SizeOf(jokeA));

Reset(f,1);
BlockWrite(f,jokeB,SizeOf(jokeB));
CloseFile(f);
4

2 に答える 2

1

FWIW、Binary*クラスではそれができないと思います。ただし、FileStreamクラスは使用できます。また、FWIW、従来のPascal / Delphi Reset(File)コマンドは、実際に新しいハンドルを開きます。再利用されるのはファイル変数(基本的にはファイル名)だけです。

于 2012-04-25T16:35:40.630 に答える
1

あなたはできる:

using lFile := File.Open('c:\jokes.dat', FileMode.ReadWrite) do begin
  var lReader := new BinaryReader(lFile);
  // read using reader

  lFile.Position := lFile.Length;
  var lWriter := new BinaryWriter(lFile);
  lWriter.Write...

end;
于 2012-04-26T06:12:02.757 に答える