System.IO.Compression.ZipFile UnauthorizedAccessException

时间:2012-10-18 13:31:15

标签: .net zipfile

我正在尝试使用.NET 4.5 ZipFile类和CreateFromDirectory(字符串,字符串)方法备份一些文件。我收到了UnauthorizedAccessException - Access Denied。我可以成功读取该目录中的所有文件,也可以将文件写入该目录。所以我认为权限设置正确。有关为什么我在ZipFile类上被拒绝访问的想法?

static void Main(string[] args)
{
    string backupLocation = @"C:\Backups";
    string directoriesToBackup = @"F:\myMedia\myPictures\Our Family\2012\Misc";

    try
    {
        ZipFile.CreateFromDirectory(directoriesToBackup, backupLocation);
    }
    catch (System.UnauthorizedAccessException e) 
    {
        Console.WriteLine(e.Message);
    }

    DirectoryInfo di = new DirectoryInfo(@"F:\myMedia\myPictures\Our Family\2012\Misc");
    File.Create(@"F:\myMedia\myPictures\Our Family\2012\Misc\testCreateFromVs.txt");
    foreach (FileInfo i in di.GetFiles())
    {
        Console.WriteLine(i.Name);
    }

    Console.ReadKey();

}

3 个答案:

答案 0 :(得分:19)

您似乎误解了某些内容。

backupLocation = @"C:\Backups";

您要使用文件覆盖目录“C:\ Backups”!这是不允许的! ;-)(拒绝访问)

您必须使用文件名指定路径 语法:CreateFromDirectory(string,string)

public static void CreateFromDirectory(
    string sourceDirectoryName,
    string destinationArchiveFileName
)

示例:

 string startPath = @"c:\example\start";
 string zipPath = @"c:\example\result.zip";
 ZipFile.CreateFromDirectory(startPath, zipPath);
 [...]

答案 1 :(得分:1)

当与(输出)zip同名的文件夹已存在时,也会出现问题

答案 2 :(得分:0)

在我的情况下,我尝试在开始将文件压缩到那里之前创建目标目录,但是创建了目标目录作为zip文件的名称,因为空zip文件已经存在(作为目录) ,我得到了同样的错误。