【问题标题】:BinaryReader and BinaryWriter file handle in Delphi PrismDelphi Prism 中的 BinaryReader 和 BinaryWriter 文件句柄
【发布时间】:2012-04-25 16:15:04
【问题描述】:

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

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);

【问题讨论】:

标签: .net file delphi-prism binaryreader binarywriter


【解决方案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;

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多