我有以下代码行可用于使用 ZipFile.CreateFromDirectory(selectedFile, zipPath) 创建 zip
if (selectedFolder == string.Empty)
{
Console.WriteLine("Invalid folder, try again");
}
else
{
Console.WriteLine("\nSelect zipfile name: ");
var zipName = Console.ReadLine();
// Also available: extractToDirectory
var zipPath = @"C:\Users\User\Documents\Dev\" + zipName + ".zip";
ZipFile.CreateFromDirectory(selectedFolder, zipPath);
但是,除了将多个文件存档到单个 zip 文件夹中之外,以下代码应该出于所有意图和目的执行相同的操作:
public static void CreateZipFile(string folderToCreateZip, IEnumerable<string> files)
{
var zipPath = folderToCreateZip + "\\test6.zip";
// Create a new ZIP in this location
using (var zip = ZipFile.Open(zipPath, ZipArchiveMode.Create))
{
foreach (var file in files)
{
// Add entry for files
zip.CreateEntryFromFile(file, zipPath, CompressionLevel.Optimal);
}
}
// Dispose of zip object after files have been zipped
//zip.Dispose();
}
var zip == ZipArchive zip
我已经尝试在应该创建 zip 的文件夹上禁用只读模式,但我认为这并不重要,因为使用 CreateFromDirectory() 的先前函数可以正常工作。我也试过在桌面上创建一个 ZIP,但我得到了同样的错误。
这是我得到的例外:
作为一个注释,我注意到尽管有这个错误,它最初确实创建了 zip,只是它不能向它添加任何东西,不像 CreateFromDirectory() 可能是由于文件夹正在使用,没有对该区域的权限或文件夹已经存在。有没有一种方法可以让 CreateEntryFromFile() 正常工作,或者另一种方法可以用于多个文件?