更改扩展名、提取、删除 zip、合并新文件夹
Changing extension, extract, delete zip, merge new folder
我有一个独特的文件扩展名,实际上只是一个 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....");
}
问题是在您实际创建重命名的 zip 文件之前设置了 newZips。您需要移动行:
string[] newZips = Directory.GetFiles(path, "*.zip");
..所以它出现在第一个 foreach 循环之后。
如果您的最终 objective 只是用 *.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....");
}
我有一个独特的文件扩展名,实际上只是一个 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....");
}
问题是在您实际创建重命名的 zip 文件之前设置了 newZips。您需要移动行:
string[] newZips = Directory.GetFiles(path, "*.zip");
..所以它出现在第一个 foreach 循环之后。
如果您的最终 objective 只是用 *.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....");
}