2017-12-20 6 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

デバッグと 'saveFileDialog1.FileName'と' foreachの(ファイル内の文字列ファイル)で '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

関連する問題