IOException 文件已经存在 C#

IOException file already exists C#

private void btn_Backup_Click(object sender, EventArgs e)
    {
        List<DirectoryInfo> SourceDir = this.lbox_Sources.Items.Cast<DirectoryInfo>().ToList();
        string TargetDir = this.tbox_Target.Text;

        foreach (DirectoryInfo directory in SourceDir)
        {
            foreach (var file in directory.GetFiles())
                if (this.checkbox_zipfiles.Checked == true)
                {
                    System.IO.Compression.ZipFile.CreateFromDirectory(directory.FullName, TargetDir + @"\test.zip");
                }
                else
                {
                    Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(directory.FullName, TargetDir, true);
                }
        }
    }

我正在创建一个备份应用程序,当我尝试压缩我需要备份的文件时,它说:"The file 'C:\Users\Lada1208\Desktop\test\test.zip' already exists." 甚至认为该文件夹之前是空的,所以它出于某种原因试图创建 test.zip 文件两次。知道为什么吗?

正如 s.m 指出的那样。在上面的评论中,对 ZipFile.CreateFromDirectory() 的调用将尝试为所有源目录创建一个具有相同位置和文件名的 zip 文件。

如果打算创建包含来自所有源目录的文件的单个存档,则不能使用 Zipfile.CreateFromDirectory() "shortcut" 方法。相反,您需要调用 ZipFile.Open(),获取 ZipArchive 对象并使用其 CreateEntry() 方法单独添加每个文件。