无效字符,同时压缩在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个字,所以它也有空格。帮助表示赞赏^ _^
答
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
没有办法像“\ C:\ Users \ SomeUser \ Desktop”(注意初始斜线)是有效路径。确保发布你在消息框中看到的值(或者更好地使用示例代码中的硬编码值,以避免猜错出了什么问题)。 – 2014-09-27 21:15:29
这不是一个初始斜线。它是一个转义的''',路径转换为:'“\ Users \ SomeUser \ Desktop \ test.nfo”'。 – 2014-09-27 21:20:05
CreateFromDirectory()要求第一个参数是一个目录,不是,它是一个文件。就像错误信息所示。 – 2014-09-27 21:35:07