2014-09-27 2 views
0

가 나는 아래의 코드를 사용하여 파일을 ZIP하려고하는 데 문제가 있어요 압축 C#에서 동안 : -잘못된 문자

 Process msinfo = new Process(); 
     msinfo.StartInfo.FileName = "msinfo32.exe"; 
     string path = "\"" + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\test.nfo" + "\""; 
     string zippath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\test.nfo"; 
     MessageBox.Show(path); 
     msinfo.StartInfo.Arguments = @"/nfo "+path; 
     //msinfo.Start(); 
     //msinfo.WaitForExit(); 
     //MessageBox.Show("The File Has Been Saved!"); 
     ZipFile.CreateFromDirectory(zippath, @"C:\Test.zip"); 
     MessageBox.Show("Everything Is Done!"); 

오는 오류는 폴더 경로가되지 않는 것입니다 유효한. 나도 Zippath 변수에 따옴표를 포함시켜 보았지만 제대로 작동하지 않았다.

PS - 내 컴퓨터 이름은 3 단어이므로 공백도 있습니다. 도움이 감사합니다^_^

+2

"\ C : \ Users \ SomeUser \ Desktop"(초기 슬래시 고지)과 같은 방법은 유효하지 않습니다. 메시지 상자에 표시되는 값을 게시하십시오 (또는 무엇이 잘못되었는지 추측하지 않으려면 샘플 코드의 하드 코드 된 값을 사용하는 것이 더 좋습니다). –

+3

초기 슬래시가 아닙니다. –

+2

CreateFromDirectory()는 첫 번째 인수가 디렉토리 여야하며 그렇지 않으면 파일입니다. 오류 메시지와 마찬가지로 –

답변

2

ZipFile.CreateFromDirectory의 첫 번째 인수는 파일 (이 경우 test.nfo가 아닌)의 경로 여야합니다. 당신이 (예를 들어 바탕 화면 디렉토리)을 전체 디렉토리를 압축하려면 다음과 같이 경로에서 "test.nfo"를 생략 :

string zippath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); 

당신이 다음 사용하는 하나의 파일에서 압축 아카이브를 만들려면 ZipFileExtensions.CreateEntryFromFile.

한 가지 더 : 두 개 이상의 구성 요소에서 경로를 작성하려는 경우 간단한 문자열 연결 대신 Path.Combine 메서드를 사용하십시오. 경로 구분 문자 추가와 같이 많은 고통으로부터 벗어날 수 있습니다.

+0

팁과 해결책을 제공해 주셔서 감사합니다.^_ ^ –