我用DotNetZip创建了一个zip文件/文件夹。我正在尝试将该文件从原始目录/文件夹移动到另一个文件夹,例如我的文件。到目前为止,我已经完成了以下操作,但它给了我一个错误,说它无法找到路径的一部分。
private static void Move()
{
try
{
Directory.Move(@"Debug\Settings.zip", IO.Paths.Enviroment.MyDocuments);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
更新:
所以我玩了一下并笑了,不是因为我修好了,而是因为它很奇怪。我同时使用File.Move()
和Directory.Move()
并将both.Move(@"Debug\Settings.zip",...);
更改为both.Move(@"Settings.zip",...);
,然后收到错误消息Cannot create a file when that file already exists.
答案 0 :(得分:2)
虽然使用Directory.Move
移动文件似乎很奇怪,(我会改用File.Move
),但Jean-Philippe Leclerc指出它可以正常工作。
问题在于路径Debug\Settings.zip
:
所有相对路径都相对于工作目录。默认情况下,工作目录是执行程序集(程序)的文件夹,而调试时则是项目的bin\Debug
子文件夹。因此,您的路径Debug\Settings.zip
将扩展为以下路径:
C:\..\MyProject\bin\Debug\Debug\Settings.zip
这可能不是你的意思。你的意思是"Settings.zip"
。
它是ZIP的事实无关紧要。
答案 1 :(得分:1)
could not find part of the path
- 错误似乎是您文件Relative Path
的{{1}}不是有效路径!
您需要使用Settings.Zip
,File.Move
会将目录的全部内容移至不同的文件夹。
Directory.Move
:仅将文件移动到指定位置
File.Move
答案 2 :(得分:1)
使用 System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)获取MyDocuments路径。
答案 3 :(得分:0)
固定!问题首先是"Debug\Settings.zip"
应该是"Settings.zip"
或@"Settings.zip"
,最后目标不应该只是System.IO.File.Move(@"Settings.zip", System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop));
而是System.IO.File.Move(@"Settings.zip", System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + @"\Settings.zip");
基本上,添加文件名和目标字符串末尾的文件扩展名。