14

.NET 4.5 ZipFile クラスと CreateFromDirectory(string, string) メソッドを使用していくつかのファイルをバックアップしようとしています。UnauthorizedAccessException - アクセスが拒否されました。そのディレクトリ内のすべてのファイルを正常に読み取ることができ、そのディレクトリにファイルを書き込むことができます。したがって、権限は適切に設定されていると思います。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();

}
4

4 に答える 4

23

何かを誤解しているようです。

backupLocation = @"C:\Backups";

ディレクトリ「C:\Backups」をファイルで上書きしたい! そんなことは許されません!;-) (アクセスが拒否されました)

ファイル名でパスを指定する必要があります。
構文: CreateFromDirectory(文字列,文字列)

public static void CreateFromDirectory(
    string sourceDirectoryName,
    string destinationArchiveFileName
)

例:

 string startPath = @"c:\example\start";
 string zipPath = @"c:\example\result.zip";
 ZipFile.CreateFromDirectory(startPath, zipPath);
 [...]
于 2012-10-18T14:03:04.717 に答える
2

私の場合、そこにファイルを圧縮する前にターゲットディレクトリを作成しようとしましたが、zipファイルの名前としてターゲットディレクトリを作成していたため、空のzipファイルが(ディレクトリとして)すでに存在していたため、取得しました同じエラー。

于 2014-05-30T12:58:53.260 に答える