【发布时间】:2021-07-19 06:20:22
【问题描述】:
我正在努力创建 zip 存档,并且可以从更有经验的编码人员那里获得一些指导。我正在尝试使用以下方法创建一个包含 800 个文件夹和子文件夹以及大约 8,000 个文件的 zip 存档。到目前为止,此代码有效,它将创建一个存档,但没有内部目录结构。所有 8,000 个文件都存储在 zip 中的单个平面列表中。有没有办法做到这一点,使其像一个典型的 zip 存档,因为文件夹结构也存储在 zip 文件中?我知道 ZipFile.CreateFromDirectory() 方法 [确实保留文件夹结构] 但不想使用它,因为如果文件被锁定,它会失败。我也知道还有其他库,但如果可能的话,我想使用 C# 库。任何指导将不胜感激。谢谢。
{
SearchOption searchOption = SearchOption.AllDirectories;
IEnumerable<string> fileSystem;
fileSystem = Directory.EnumerateFileSystemEntries(_zipRoot, "*.*", searchOption);
using (ZipArchive archive = ZipFile.Open(_zipPath, ZipArchiveMode.Create))
{
foreach (var fPath in fileSystem)
{
try
{
archive.CreateEntryFromFile(fPath,Path.GetFileName(fPath));
}
catch
{
FailedFiles.Add(fPath);
Debug.Log(fPath);
}
}
}
Debug.Log($"{FailedFiles.Count} files failed to archive.");
}```
【问题讨论】:
-
but do not want to use it because it fails in the event that a file is locked.将文件复制到新位置。从那里创建 zip。