无效字符,同时压缩在C#

问题描述:

我有一个问题,我想用下面的代码,拉上一个文件: -无效字符,同时压缩在C#

 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个字,所以它也有空格。帮助表示赞赏^ _^

+2

没有办法像“\ C:\ Users \ SomeUser \ Desktop”(注意初始斜线)是有效路径。确保发布你在消息框中看到的值(或者更好地使用示例代码中的硬编码值,以避免猜错出了什么问题)。 – 2014-09-27 21:15:29

+3

这不是一个初始斜线。它是一个转义的''',路径转换为:'“\ Users \ SomeUser \ Desktop \ test.nfo”'。 – 2014-09-27 21:20:05

+2

CreateFromDirectory()要求第一个参数是一个目录,不是,它是一个文件。就像错误信息所示。 – 2014-09-27 21:35:07

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

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

如果你想创建只有一个文件一个zip压缩文件,然后使用ZipFileExtensions.CreateEntryFromFile

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

+0

感谢提示和解决方案。非常感谢^ _ ^ – 2014-09-28 05:55:21