C# System.ArgumentException: "Empty path name is not legal."



我正在使用winforms和zip程序。现在,我遇到的第一个打ic是,当我尝试保存时,它不会强制任何扩展名,因此,如果我输入一个名称,它将其保存为文件。我用以下方式修复了此问题:

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

根据您在调试中的发现。

如果文件名为空白,您将获得此错误。您需要输入文件名。

您可以添加额外的支票:

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

相关内容

最新更新