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() 方法单独添加每个文件。
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() 方法单独添加每个文件。