加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何快速清零文件内容?

发布时间:2020-12-15 04:22:40 所属栏目:大数据 来源:网络整理
导读:我想终止用户从我的程序中选择的文件.我写了这个示例代码: var aFile: TFileStream;Const FileAddr: String = 'H:Akon.mp3'; Buf: Byte = 0;begin if FileExists(FileAddr) then begin // Open given file in file stream rewrite it aFile:= TFileStream.
我想终止用户从我的程序中选择的文件.我写了这个示例代码:
var
  aFile: TFileStream;
Const
  FileAddr: String = 'H:Akon.mp3';
  Buf: Byte = 0;
begin
  if FileExists(FileAddr) then
  begin
    // Open given file in file stream & rewrite it
    aFile:= TFileStream.Create(FileAddr,fmOpenReadWrite);
    try
      aFile.Seek(0,soFromBeginning);
      while aFile.Position <> aFile.Size do
        aFile.Write(Buf,1);
    finally
      aFile.Free;
      ShowMessage('Finish');
    end;
  end;
end;

如您所见,我用0(null)值覆盖给定文件.此代码可以正常工作,但在大文件中速度非常低.我想在多线程代码中执行此过程,但我尝试了一些测试代码而无法执行此操作.例如,我创建了4个执行此操作的线程来加速此过程.

有没有办法加快这个过程?

解决方法

我不知道它是否可以帮助你,但我认为你可以做得更好(比多线程)写入更大的缓冲区. 例如,您可以初始化16k宽的缓冲区并直接写入FileStream;你只需要检查文件的最后一部分,你只为其写入完整缓冲区的一部分. 相信我,它会更快……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读