IOException文件已经存在C#

时间:2017-04-02 10:58:51

标签: c# backup

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);
                }
        }
    }

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

1 个答案:

答案 0 :(得分:0)

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

如果打算创建一个包含所有源目录中文件的存档,那么Zipfile.CreateFromDirectory()&#34;快捷方式&#34;方法不能使用。相反,您需要调用ZipFile.Open(),获取ZipArchive对象并使用其CreateEntry()方法单独添加每个文件。