在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 \診斷工具藍屏\ Default_ZippedFile_Directory'被拒絕。
System.UnauthorizedAccessException的是未處理
的HResult = -2147024891
消息=訪問路徑 'C:\用戶\ bout0_000 \應用程序數據\本地\ Diagnostic_Tool_Blue_Screen \診斷工具藍屏\ Default_ZippedFile_Directory' 被拒絕。
我不明白爲什麼這個zippedFileDirectory
被鎖定或訪問被拒絕?
如果我選擇任何其他目錄作爲源例如d:\test
沒有問題。
您是否在某處打開該文件? – Spencer
這是爲我工作: 在構造我加入到這一行到底\\ zippedFileDirectory = Path.GetDirectoryName(Application.LocalUserAppDataPath)+ 「\\ Default_ZippedFile_Directory \\」; 而在compress()方法中,我做了: compressor.CompressDirectory(source,output +「Diagnosis_Files.zip」); 最後添加了一個文件名。 現在它的工作。 謝謝。 – DanielVest
您可能需要考慮使用Path.Combine,而不是通過添加字符串來構建路徑。 –