我試圖寫一個小控制檯應用程序的工具,解壓包含多個文件/文件夾/其他檔案的歸檔,並安排它的內容以另一種方式。等待.zip文件,以複製之前提取的內容別處programmaticaly
我解壓縮與ZipFile.ExtractToDirectory
法根文件從System.IO.Compression.FileSystem
庫:
public static void UnzipPackage(string packagePath, string targetPath)
{
try
{
ZipFile.ExtractToDirectory(packagePath, targetLocation);
Console.WriteLine("Unzipping file {0} complete.", packagePath);
}
catch (DirectoryNotFoundException)
{
Console.WriteLine("Directory was not found.");
}
catch (FileNotFoundException)
{
Console.WriteLine("File was not found.");
}
}
在我的包上運行此方法後,我想複製這是此包中的子文件夾中的文件。
根據MSDN我這樣做:
if (!Directory.Exists(targetLocation + @"READY\PHOTO"))
{
Directory.CreateDirectory(targetLocation + @"\READY\PHOTO");
}
if (Directory.Exists(targetLocation + @"\MAIN\PHOTO"))
{
string[] files = Directory.GetFiles(targetLocation + @"\MAIN\PHOTO");
foreach (var file in files)
{
string fileName = Path.GetFileName(file);
string destFile = Path.Combine(targetLocation + @"\MAIN\PHOTO", fileName);
File.Copy(file, destFile, true);
}
}
兩個MAIN
和READY
是我的子目錄,其中全包去(「主」)和排序的文件去(「準備好了」)。
但是,運行此操作時,zip文件尚未解壓縮 - 發生異常,表明它無法訪問指定的文件,即使它從Directory.GetFiles()
中獲取了該文件的名稱。解壓zip文件時創建的文件夾僅在我終止我的控制檯應用程序後顯示(難怪無法訪問它)。
因此,最大的問題是 - 我怎麼能等待解壓縮文件夾露面?我嘗試使用Thread.Sleep()
,但它不會影響流 - 無論如何仍然會發生異常,並且該文件夾僅在我終止應用程序後才顯示。
你能顯示完整的代碼示例,所以我們可以看到2個代碼是如何結合在一起,而不是尋找無關 – TheLethalCoder