2017-12-20 42 views
0

저는 winforms 및 zip 프로그램을 망설입니다. 이제 내가 가진 첫 번째 딸꾹질은 저장하려고 할 때 확장을 강요하지 않았다는 것입니다. 그래서 이름을 입력하면 파일로 저장했습니다. (나는 name.rar에 입력하면, 그것은 잘 작동하지만, 그러나 우리는 물론, .RAR 부분이 자동으로되고 싶어)C# System.ArgumentException : "빈 경로 이름이 올바르지 않습니다."

saveFileDialog1.Title = "Izberi kam naj se datoteke kompresirajo"; 
saveFileDialog1.DefaultExt = "rar"; 
saveFileDialog1.Filter = "RAR Files (*.rar)|*.rar"; 
saveFileDialog1.FilterIndex = 1; 

는 지금은 비록, 확장으로 .RAR 강제 : 나는 이것을 고정 , 이름 자체가 아닌 "파일 형식"드롭 다운에 있습니다.

그냥 이름으로 저장하려고 할 때; 그것은 "빈 경로 이름은 합법적이지 않습니다"오류를 던졌습니다. 끝에 .rar를 입력하면 똑같은 동작을합니다.

나머지 코드는 다음과 같습니다. 나머지는 잘 작동합니다. ZipArchive zip = ZipFile.Open 행에서 발생합니다.

private void button3_Click(object sender, EventArgs e) 
{ 

    saveFileDialog1.Title = "Izberi kam naj se datoteke kompresirajo"; 
    saveFileDialog1.DefaultExt = "rar"; 
    saveFileDialog1.Filter = "RAR Files (*.rar)|*.rar"; 
    saveFileDialog1.FilterIndex = 1; 


    DialogResult result = saveFileDialog1.ShowDialog(); 
    if (result == DialogResult.OK) 
    { 
     if (isFolder) 
     { 
      ZipFile.CreateFromDirectory(textBox1.Text, saveFileDialog1.FileName); 
     } 
     else 
     { 
      string[] files = textBox1.Text.Split(','); 
      ZipArchive zip = ZipFile.Open(saveFileDialog1.FileName, ZipArchiveMode.Create); 
      foreach (string file in files) 
      { 
       zip.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal); 
      } 
      zip.Dispose(); 
     } 
     MessageBox.Show("Uspešno!"); 
    } 
} 
+0

디버그 및'foreach는 (파일에서 문자열 파일)'에 saveFileDialog1.FileName''의 가치와'file'을 확인합니다. 빈 문자열이 아니어야합니다. – Sunil

+0

죄송합니다. 이해할 것 같지 않습니다. 나는 이것 모두에 아주 새롭다. – GhostyIs1337

+0

Visual Studio에서 코드를 디버깅하는 방법에 대해 알아보십시오. 'saveFileDialog1.FileName'과'file'을 사용했던 곳에 브레이크 포인트를 추가하십시오. 중단 점에 도달 할 때마다 값이 비어 있는지 확인하십시오. 그게 비어 있다면? 무슨 일이야? – Sunil

답변

0

디버그에서 발견 한 내용을 기반으로합니다.

FileName이 비어 있으면이 오류가 발생합니다. 파일 이름을 입력해야합니다.

당신은 추가 검사 추가 할 수 있습니다

if (result == DialogResult.OK && !string.IsNullOrEmpty(saveFileDialog1.FileName)) 
+0

좋아요, 이제는 더 이상 오류가 발생하지 않지만 발생하는 것은 무엇입니까? 처음으로 프로그램을 디버그하고 압축 할 파일을 선택하면 파일이 저장되고 저장되지 않고 메시지 상자가없고 폴더 창이 닫히지 만 다시 압축하려고하면 (여전히 실행 중입니다. 프로그램에서) 저장하기 위해 창 안쪽에 "파일 * .rar이 존재하지 않습니다. 올바른 파일 이름이 주어 졌는지 확인하십시오."라고 말합니다. 내 입력란에 확장자를 입력했는지 여부는 중요하지 않습니다. 기본적으로 FileName을 추가해야합니까? – GhostyIs1337