我正在处理计算机中的大型日志文件(约40 MB)。这些文件不断被写入。
我首先检查文件是否被更改,然后我使用CopyFile()
将其复制到我自己,然后处理它。我认为这是好的,但在3台机器中,1台机器今天不再更新调试文件。
(only在我使用VNC将日志复制给我之后,它是否突然开始更新)CopyFile()
是否以某种方式阻止了文件?
如果是,是否有替代方法来复制文件而不锁定?
CopyFile(PChar(source), PChar(dest), FALSE);
更新1
现在我用途:
CopyFileExW(PChar(source), PChar(dest), nil, nil, nil, COPY_FILE_OPEN_SOURCE_FOR_WRITE);
使用另一个非常小的应用程序,我尝试在复制过程中写入文件:
procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
begin
inc(i);
try
AssignFile(F, '\\xxxx\xx\xx\xx\xx\xx\HJobs4.trc');
try
if FileExists('\\xxxx\xx\xx\xx\xx\xx\HJobs4.trc') then
Append(F)
else
Rewrite(F);
Writeln(F, '['+FormatDateTime('yyyy-MM-dd hh:nn:ss',now)+'] '+'WRITE TEST'+' '+i.ToString);
finally
CloseFile(F);
end;
except
on E : Exception do
Memo1.Lines.Add(DateTimeToStr(now)+' '+E.Message);
end;
end;
我要做的就是开始复制。这需要一段时间。与此同时,我不停地执行另一个应用程序,在复制操作开始时我得到了一些I/O 103错误,这很糟糕。
1条答案
按热度按时间vq8itlhq1#
我是这样解决的:
这不会阻止文件。