C#中压缩时路径中的字符无效

时间:2014-09-27 21:09:45

标签: c# .net

我遇到问题,我正在尝试使用以下代码压缩文件: -

        Process msinfo = new Process();
        msinfo.StartInfo.FileName = "msinfo32.exe";
        string path = "\"" + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\test.nfo" + "\"";
        string zippath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\test.nfo";
        MessageBox.Show(path);
        msinfo.StartInfo.Arguments = @"/nfo "+path;
        //msinfo.Start();
        //msinfo.WaitForExit();
        //MessageBox.Show("The File Has Been Saved!");
        ZipFile.CreateFromDirectory(zippath, @"C:\Test.zip");
        MessageBox.Show("Everything Is Done!");

即将发生的错误是文件夹路径无效。我也尝试在Zippath变量中包含引号,但它没有用。

PS - 我的机器名有3个字,所以它也有空格。感谢帮助^ _ ^

1 个答案:

答案 0 :(得分:2)

ZipFile.CreateFromDirectory的第一个参数应该是目录的路径,而不是文件(在本例中为test.nfo)。 如果你想压缩整个目录(例如桌面目录),那么省略" test.nfo"从路径上,像这样:

string zippath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

如果您只想从一个文件创建一个zip存档,请使用ZipFileExtensions.CreateEntryFromFile

还有一件事:当您想要从两个或更多组件构建路径时,请使用Path.Combine方法而不是简单的字符串连接。它可以避免很多痛苦(比如添加路径分隔符)。