System.IO.Compression.ZipFile UnauthorizedAccessException

jma*_*mac 11 .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();

}
Run Code Online (Sandbox Code Playgroud)

mos*_*o-x 21

你好像误解了一些东西.

backupLocation = @"C:\Backups";
Run Code Online (Sandbox Code Playgroud)

你要覆盖目录 "C:\备份"一个文件!这是不允许的!;-) (拒绝访问)

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

public static void CreateFromDirectory(
    string sourceDirectoryName,
    string destinationArchiveFileName
)
Run Code Online (Sandbox Code Playgroud)

例:

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