2017-12-20 5 views
0

Ich bin mit winforms und zip-Programmen herumalbern. Nun, der erste Schluckauf, den ich hatte, war, dass es keine Erweiterung erzwang, wenn ich versuchte, es zu speichern, also wenn ich einen Namen eingab, speicherte es es gerade als eine Akte. Ich reparierte diese mit: (obwohl, wenn ich in name.rar getippt es gut funktioniert, aber wir wollen das .rar Teil automatisch zu sein, natürlich)C# System.ArgumentException: "Der Name des leeren Pfads ist nicht zulässig."

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

Nun zwingt .rar als Erweiterung, obwohl Es befindet sich in der Dropdown-Liste "Dateityp", nicht im Namen selbst.

Wenn ich versuche, es mit nur einem Namen zu speichern; es wirft den Fehler "leerer Pfadname ist nicht zulässig" auf, es macht dasselbe, wenn ich am Ende rar eingib.

Hier ist der Rest des Codes der Schaltfläche; die anderen funktionieren gut. Es passiert bei der ZipArchive zip = ZipFile.Open Linie.

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

Debug und überprüfen Wert von 'saveFileDialog1.FileName' und' 'file' in foreach (string Datei in Dateien)'. Es sollte keine leere Zeichenfolge sein. – Sunil

+0

Es tut mir leid, ich glaube nicht, dass ich es verstehe. Ich bin sehr neu in all dem. – GhostyIs1337

+0

Erfahren Sie, wie Sie Ihren Code in Visual Studio debuggen. Fügen Sie an den Stellen, an denen Sie 'saveFileDialog1.FileName' und' file' verwenden, Haltepunkte hinzu. Wann auch immer der Unterbrechungspunkt getroffen wird, überprüfen Sie den Wert, wenn es leer ist oder nicht? Wenn es leer ist? Was ist der Grund? – Sunil

Antwort

0

Basierend auf Ihren Ergebnissen in der debug.

Wenn Dateiname leer ist, erhalten Sie diesen Fehler. Sie müssen einen Dateinamen eingeben.

Sie können zusätzliche Überprüfung hinzufügen:

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

Okay, jetzt wirft es diesen Fehler nicht mehr raus, aber was passiert, ist; Wenn ich zuerst mit dem Debuggen des Programms und wählen Sie eine Datei zu komprimieren, geht es durch (es speichert nicht, und es gibt keine Nachrichtenbox, schließt das Ordnerfenster nur, aber wenn ich versuche, es erneut zu komprimieren (läuft noch das Programm) sagt es innerhalb des Fensters zu speichern; "Datei * .rar existiert nicht. Überprüfen Sie, dass der korrekte Dateiname gegeben wurde." Und es ist nicht wichtig, wenn ich die Erweiterung alleine einlege oder nicht Also im Grunde muss ich einen Dateinamen hinzufügen? – GhostyIs1337

Verwandte Themen