File.Move的System.IO.DirectoryNotFoundException

时间:2011-08-12 10:00:20

标签: c# file-io

一个简单的问题(我希望): 当我使用File.Move它给我一个错误:

System.IO.DirectoryNotFoundException was unhandled by user code
  Message=Could not find a part of the path.
  Source=mscorlib
  StackTrace:
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.__Error.WinIOError()
       at System.IO.File.Move(String sourceFileName, String destFileName)
       at Portal_2_Level_Installer.Form1.WorkMagic(String FileLocation) in C:\Users\Yoshie\Local Settings\Documents\Visual Studio 2010\Projects\Portal 2 Level Installer\Portal 2 Level Installer\Form1.cs:line 265
  InnerException: 

我的代码:

File.Move(FileLocation, destinationPath);

变量的内容:

destinationPath="c:/program files (x86)/steam\\steamapps\\common\\portal 2\\Test\\Test.docx"
FileLocation="C:\\Users\\Yoshie\\Local Settings\\Documents\\Test.docx"

谢谢! 编辑:我现在真的觉得自己像个白痴。我没有意识到目标文件夹必须存在!我愚蠢地假设目标文件夹将自动创建,如果它尚不存在。很抱歉浪费你的时间,但谢谢你的答案! (我现在知道我可以使用@来停止转义,所以这很有用) 无论如何,再次感谢对不起!

4 个答案:

答案 0 :(得分:3)

请使用\而不是/以及使用@ like @“path”。

答案 1 :(得分:2)

这会有什么不同吗?

destinationPath=@"c:\program files (x86)\steam\steamapps\common\portal 2\Test\Test.docx";
FileLocation=@"C:\Users\Yoshie\Local Settings\Documents\Test.docx";

答案 2 :(得分:0)

您的目标文件路径应该是这样的

destinationPath="c:\\program files (x86)\\steam\\steamapps\\common\\portal 2\\Test\\Test.docx"

答案 3 :(得分:0)

在执行File.Delete时,我也被此TargetInvocationException捕获,并且没有注意到确保目录存在的内部消息。

这是由于我从Release切换到Debug而我无法创建一组包含要删除的文件的相对子文件夹。