【问题标题】:C# System.ArgumentException: "Empty path name is not legal."C# System.ArgumentException:“空路径名不合法。”
【发布时间】:2018-06-02 16:47:55
【问题描述】:

我在搞乱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!");
    }
}

【问题讨论】:

  • 调试并检查foreach (string file in files)saveFileDialog1.FileNamefile 的值。它不应该是空字符串。
  • 对不起,我不明白。我对这一切都很陌生。
  • 了解如何在 Visual Studio 中调试代码。在您使用saveFileDialog1.FileNamefile 的地方添加断点。每当遇到断点时,检查该值,是否为空?如果它是空的?什么原因?
  • 文件是 {string[1]} string[] ;但是 saveFileDialog1.FileName 是“”,这是否意味着我必须输入文件名?例如*.rar?因为每当我尝试通过 ZipArchive zip 继续执行任何操作时,它都会停止所有操作并再次引发错误。

标签: c# path ziparchive argumentexception


【解决方案1】:

根据您在调试中的发现。

如果 FileName 为空,您将收到此错误。您需要输入文件名。

您可以添加额外的检查:

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

【讨论】:

  • 好的,现在它不再抛出那个错误了,但是会发生什么;当我第一次开始调试程序并选择要压缩的文件时,它会通过(它不保存,并且没有消息框,文件夹窗口只是关闭,但是如果我再次尝试压缩它(仍在运行程序) ) 它会在要保存的窗口内显示;“文件 *.rar 不存在。验证是否给出了正确的文件名。”我是否自己输入扩展名也没关系。所以基本上,我需要添加文件名吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
相关资源
最近更新 更多