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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#System.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!");
    }
}
答案

根据您在调试中的发现。

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

您可以添加额外的支票:

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

以上是关于C#System.ArgumentException:“空路径名称不合法。”的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ floor 函数

C语言数组问题?

关于c++/c

C语言 extern “C”

使用 MetroWerks C/C++ 开发的 C/C++ 资源

Lua与C/C++交互——C/C++调用Lua脚本