嗨,我的 WPF 应用程序中有一个按钮,可以从 zip 中提取一组文件。我需要处理提取文件夹中的文件。但是在提取后,如果我访问该文件,我会不断收到一个异常,指出“文件已被其他进程使用,无法访问”。我使用了 Stream.flush()、Stream.Close()、Stream.Dispose()。它们都没有用。
var zipFilePath = @"C:\Output.zip";
var tempFolderPath = @"C:\Unzipped";
using (Package package = ZipPackage.Open(zipFilePath, FileMode.Open, FileAccess.Read))
{
foreach (PackagePart part in package.GetParts())
{
var target = Path.GetFullPath(Path.Combine(tempFolderPath, part.Uri.OriginalString.TrimStart('/')));
var targetDir = target.Remove(target.LastIndexOf('\\'));
if (!Directory.Exists(targetDir))
Directory.CreateDirectory(targetDir);
MemoryStream memoryStream = new MemoryStream();
using (Stream source = part.GetStream(FileMode.Open, FileAccess.Read))
// using (Stream source = new FileStream(, FileMode.Open))
{
source.CopyTo(File.OpenWrite(target));
// CopyStreamTo(source, memoryStream);
}
}
}
MessageBox.Show("Extracted in a folder");
myclass obj=new myclass(@"C:\Unzipped\Something.xml");
// Something.xml has been used by some other process
提取工作正常。但是在我访问 C:\Unzipped\something.xml 中的文件时提取后,我不断收到此错误。“该进程无法访问文件 'C:\Unzipped\Something.xml',因为它正在被另一个进程使用。” 我该如何解决?