【问题标题】:Changing extension, extract, delete zip, merge new folder更改扩展名、提取、删除 zip、合并新文件夹
【发布时间】:2020-07-03 05:29:39
【问题描述】:

我有一个独特的文件扩展名,它实际上只是一个 zip。我试图在一个事件中更改扩展名,提取文件,然后将它们全部合并到一个文件中。

我可以移动文件,更改扩展名,但它停在那里。它不会提取文件。我试图把Thread.Sleep(10000) 放在想也许它没有看到拉链,因为它们仍在复制,但这也不起作用。

string path = txtField.text;
string[] originalFiles = Directory.GetFiles(path, "*.unique");
string[] newZips = Directory.GetFiles(path, "*.zip");
try
{
    foreach (var item in originalFiles)
    {
        File.Copy(item, Path.ChangeExtension(item, ".zip"));
    }
    foreach (var item in newZips)
    {
        ZipFile.CreateFromDirectory(path, item);
        Zipfile.ExtractToDirectory(item, path);
    }
}
catch (exception ex)
{
    MessageBox.Show(ex.Message, "Fail....");
}

【问题讨论】:

    标签: c# zip file-copying


    【解决方案1】:

    问题是在您实际创建重命名的 zip 文件之前设置了 newZips。你需要移动这条线:

    string[] newZips = Directory.GetFiles(path, "*.zip");
    

    ..这样它就出现在第一个 foreach 循环之后。

    如果您的最终目标只是创建一个包含 *.unique 文件内容的新 zip,也许您可​​以避免重命名文件。您可以执行类似以下操作,将文件提取到临时文件夹并从这些文件创建新的 zip:

    string path = txtField.text;
    string[] originalFiles = Directory.GetFiles(path, "*.unique");
    
    try
    {
        var extractedFilesPath = Path.Combine(path, "ExtractedFiles");
        var newZipFile = Path.Combine(path, "NewZipFile.zip");
    
        foreach (var item in originalFiles)
        {
            ZipFile.ExtractToDirectory(item, extractedFilesPath);
        }
    
        ZipFile.CreateFromDirectory(extractedFilesPath, newZipFile);
    
        Directory.Delete(extractedFilesPath, true);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Fail....");
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 2015-09-14
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2013-04-12
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多