C#System.ArgumentException:“空路径名称不合法。”

时间:2017-12-20 07:20:02

标签: c# path ziparchive argumentexception

我正在搞乱winforms和zip程序。现在,我遇到的第一个打嗝是当我试图保存它时它没有强制任何扩展,所以如果我输入一个名字它只是将它保存为文件。我修复了这个:(虽然,如果我输入name.rar它工作正常,但我们希望.rar部分是自动的,当然)

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!");
    }
}

1 个答案:

答案 0 :(得分:1)

根据您在调试中的发现。

如果FileName为空,则会出现此错误。您需要输入文件名。

您可以添加额外的支票:

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