我遇到问题,我正在尝试使用以下代码压缩文件: -
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个字,所以它也有空格。感谢帮助^ _ ^
答案 0 :(得分:2)
ZipFile.CreateFromDirectory
的第一个参数应该是目录的路径,而不是文件(在本例中为test.nfo)。
如果你想压缩整个目录(例如桌面目录),那么省略" test.nfo"从路径上,像这样:
string zippath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
如果您只想从一个文件创建一个zip存档,请使用ZipFileExtensions.CreateEntryFromFile。
还有一件事:当您想要从两个或更多组件构建路径时,请使用Path.Combine方法而不是简单的字符串连接。它可以避免很多痛苦(比如添加路径分隔符)。