私は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!");
}
}
デバッグと 'saveFileDialog1.FileName'と' foreachの(ファイル内の文字列ファイル)で 'file''の値を確認してください。空の文字列であってはなりません。 – Sunil
申し訳ありませんが、私は理解できないと思います。私はこのすべてにとても新しいです。 – GhostyIs1337
Visual Studioでコードをデバッグする方法を学びます。これまでに 'saveFileDialog1.FileName'と' file'を使用した場所にブレークポイントを追加してください。ブレークポイントに達するたびに、値が空であるかどうかをチェックします。空の場合は?何が原因? – Sunil