我正在尝试使用.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();
}
答案 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文件已经存在(作为目录) ,我得到了同样的错误。