gpt4 book ai didi

c# - DotNetZip 提取阻止进程访问文件

转载 作者:行者123 更新时间:2023-11-30 21:59:28 26 4
gpt4 key购买 nike

我正在使用 DotNetZip从 zip 文件中提取文件的库。

using(ZipFile zip = ZipFile.Read(zipLocation))
{
foreach (ZipEntry entry in zip){
entry.Extract(_updateDir);
Log.Write("Unpacked: " + entry.FileName, Log.LogType.Info);
}

zip.Dispose();
}

稍后,我尝试编辑我提取的其中一个文件。

var updateList = allFiles.Where(x => x.Contains(".UPD"));
foreach (string upd in updateList){
string[] result = File.ReadAllLines(upd);
int index = Array.IndexOf(result, "[Info]");

//then I do stuff with index
}

在线

string[] result = File.ReadAllLines(upd);

我得到异常:The process cannot access the file <file name> because it is being used by another process.

我知道抛出这个异常是因为该文件正在别处使用。在File.ReadAllLines(upd)之前唯一被使用的地方在上面的 DotNetZip 代码中。

DotNetZip 代码中有没有办法防止这种情况发生?

最佳答案

问题不是来自 DotNetZip。我在我的项目中尝试了代码并且它有效文件:

[Test]
public void Test2()
{
using (ZipFile zip = ZipFile.Read("D:/ArchiveTest.zip"))
{
foreach (ZipEntry entry in zip)
{
entry.Extract("D:/ArchiveTest");
}

zip.Dispose();
}

var updateList = Directory.GetFiles("D:/ArchiveTest").Where(x => x.Contains(".UPD"));
foreach (string upd in updateList)
{
string[] result = File.ReadAllLines(upd);
int index = Array.IndexOf(result, "[Info]");

//then I do stuff with index
}
}

可能另一个进程正在使用您尝试读取的文件。如果您有 Windows7 或 Windows8,则可以使用内置的资源监视器。阅读这篇文章:How to know what process is using a given file?

关于c# - DotNetZip 提取阻止进程访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29239723/

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