0

我希望能够在同一实例中或通过同一文件句柄读取和写入文件。我的意思是这个。假设您按如下方式打开一个文件。

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

我希望能够写入文件而不必关闭 jfile 句柄然后调用 BinaryWriter 来写入文件。你能做到吗?

此外,一旦打开要写入的文件,旧文件中的任何同名数据都将被完全删除。真的吗?

我知道您可以按照以下方式为 Win32 执行此操作,而无需重新分配 f 文件句柄。

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

你可以:

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 回答
1

FWIW,我不认为你可以用 Binary* 类做到这一点。不过,您可以使用 FileStream 类。此外,FWIW,经典的 Pascal/Delphi Reset(File) 命令实际上打开了一个新句柄——它只是被重用的文件变量(本质上是文件名)。

于 2012-04-25T16:35:40.630 回答