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