我想终止用户从我的程序中选择的文件.我写了这个示例代码:
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;你只需要检查文件的最后一部分,你只为其写入完整缓冲区的一部分. 相信我,它会更快……