1

Form1 のコンストラクターで、次のことを行いました。

contentDirectory = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\SF_" + currentDate;
            zippedFileDirectory = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\Default_ZippedFile_Directory";
            if (!Directory.Exists(zippedFileDirectory))
            {
                Directory.CreateDirectory(zippedFileDirectory);
            }
            if (!Directory.Exists(contentDirectory))
            {
                Directory.CreateDirectory(contentDirectory);
            }

ブレークポイントで初めてチェックされzippedFileDirectory、存在しない場合は作成され、存在しない場合は何もありません。についても同じですcontentDirectory

今、私はcontentDirectoryここにあります:

C:\\Users\\bout0_000\\AppData\\Local\\Diagnostic_Tool_Blue_Screen\\Diagnostic Tool Blue Screen\\SF_04-08-13

内部contentDirectoryには、10個のファイルのようなものがあります。

次にzippedFileDirectory、次のとおりです。

C:\\Users\\bout0_000\\AppData\\Local\\Diagnostic_Tool_Blue_Screen\\Diagnostic Tool Blue Screen\\Default_ZippedFile_Directory

このディレクトリは空です。

それから私はこのCompress()方法を持っています:

private void Compress()
{
            string source = contentDirectory;
            string output = zippedFileDirectory;
            string programFilesX86 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86) + "\\Diagnostic Tool\\7z.dll";
            if (File.Exists(programFilesX86))
            {
                SevenZipExtractor.SetLibraryPath(programFilesX86);
            }
            string programFiles = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) + "\\Diagnostic Tool\\7z.dll";
            if (File.Exists(programFiles))
            {
                SevenZipExtractor.SetLibraryPath(programFiles);
            }
            SevenZipCompressor compressor = new SevenZipCompressor();
            compressor.ArchiveFormat = OutArchiveFormat.Zip;
            compressor.CompressionMode = CompressionMode.Create;
            compressor.TempFolderPath = System.IO.Path.GetTempPath();
            compressor.CompressDirectory(source, output);
            Process.Start(Path.GetFullPath(zippedFileDirectory));
}

何らかの理由で、次のようになります。

compressor.CompressDirectory(source, output);

私は例外を取得しています:

パス「C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\Default_ZippedFile_Directory」へのアクセスが拒否されました。

System.UnauthorizedAccessException は処理されませんでした
HResult=-2147024891
Message=パス 'C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\Default_ZippedFile_Directory' へのアクセスが拒否されました。

zippedFileDirectoryこれがロックされている、またはアクセスが拒否されている理由がわかりません。

たとえば、ソースとして他のディレクトリを選択してもd:\test問題はありません。

4

1 に答える 1

3

2 番目のパラメーターのディレクトリ名を CompressDirectory に渡すため、機能しません。
...のようなファイル名を渡す必要があります。

    string output = Path.Combine(zippedFileDirectory, "MyZipFile.7z");
    .....

    compressor.CompressDirectory(source, output);
于 2013-08-03T23:07:03.910 に答える