2012-10-18 40 views
9

我想用.NET 4.5 ZipFile类和CreateFromDirectory(string,string)方法备份一些文件。我得到一个UnauthorizedAccessException - 拒绝访问。我可以成功读取该目录中的所有文件,并将文件写入该目录。所以我会认为权限设置正确。任何关于为什么我在ZipFile类中拒绝访问的想法?System.IO.Compression.ZipFile UnauthorizedAccessException

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

} 

回答

16

看来你误解了什么。

backupLocation = @"C:\Backups"; 

要覆盖目录 “C:\备份” 以文件!这是不允许的! ;-)(拒绝访问)

您必须指定具有文件名的路径。
语法:CreateFromDirectory(字符串,字符串)

public static void CreateFromDirectory(
    string sourceDirectoryName, 
    string destinationArchiveFileName 
) 

例子:

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

您是完全正确的!我不敢相信我忽略了这一点。谢谢你的帮助。 – jmac

+0

可以在匆忙中发生;-) –

+0

有趣,由于完全相同的原因得到了完全相同的错误...所以如果它可以安慰你,你并不孤单我的朋友:-D – ssougnez

0

在我来说,我试图创建目标目录之前,我开始到压缩文件存在,但创建目标目录作为zip文件的名称,因为空的zip文件已经存在(作为一个目录),所以我得到了同样的错误。

0

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

相关问题