こんにちは、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 のファイルにアクセスすると、このエラーが発生し続けます。どうすれば解決できますか??