2012-10-18 117 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同名的文件夾已經存在時,問題也會出現

相關問題