gpt4 book ai didi

Delphi - 以只读方式打开 zip 文件

转载 作者:行者123 更新时间:2023-12-03 15:26:41 26 4
gpt4 key购买 nike

我使用内部 TZipFile。当我打开 zip 时,Delphi 似乎只打开它。只要 zip 文件没有被释放,文件访问就会被拒绝

lZipFile := tZipFile.Create;
if lZipFile.IsValid( sPath) then begin
lZipFile.Open( sPath, zmRead );
...
// access denied to sPath
end;
lZipFile.Free;

我只想读书。为什么delphi会这样?如果我想多次访问一个 zip 文件,那么我必须制作一个本地副本并使用该副本吗?我真的不喜欢这个解决方法。首先,因为 zip 文件可能很大。

知道如何才能以只读模式同时多次访问同一个 zip 吗?

最佳答案

您可以创建一个以所需共享模式打开的TFileStream实例。然后使用 TZipFile 的重载 Open 方法来接受 TStream

请注意,TZipFile.IsValid 也会尝试以独占方式打开文件。由于 IsValid 不做 Open 所做的事情,因此我添加了一个 try- except block 来捕获任何无效或无法访问的目标。因此可以省略对 IsValid 的调用。

  zip := TZipFile.Create;
try
stream := TFileStream.Create(sPath, fmOpenRead + fmShareDenyWrite);
try
try
zip.Open(stream, zmRead);
except
on EZipException do begin
// access denied to sPath
end;
end;
finally
stream.Free;
end;
finally
zip.Free;
end;

关于Delphi - 以只读方式打开 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com