我正在搞乱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!");
}
}
答案 0 :(得分:1)
根据您在调试中的发现。
如果FileName为空,则会出现此错误。您需要输入文件名。
您可以添加额外的支票:
if (result == DialogResult.OK && !string.IsNullOrEmpty(saveFileDialog1.FileName))