System.IO.DirectoryNotFoundException by File.Move
本文关键字:File Move by DirectoryNotFoundException IO System | 更新日期: 2023-09-27 18:05:27
我希望有一个简短的问题:当我使用文件。移动它会给我一个错误:
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"
谢谢!编辑:我现在真的觉得自己像个白痴。我没有意识到目标文件夹必须存在!我愚蠢地认为,如果目标文件夹不存在,就会自动创建它。很抱歉浪费了你的时间,但是无论如何还是要感谢你的回答!(我现在知道我可以使用@来停止转义,所以知道这个很好)无论如何,谢谢你,再一次,对不起!
请使用'而不是/以及使用@,如@"path"。
这有什么区别吗?
destinationPath=@"c:'program files (x86)'steam'steamapps'common'portal 2'Test'Test.docx";
FileLocation=@"C:'Users'Yoshie'Local Settings'Documents'Test.docx";
您的目标文件路径应该像这样
destinationPath="c:''program files (x86)''steam''steamapps''common''portal 2''Test''Test.docx"
我在做文件时也被这个TargetInvocationException捕获。删除并没有注意到确保目录存在的内部消息。
这是由于我从发布切换到调试,我没有创建一组包含要删除的文件的相对子文件夹。
在我的情况下(WinForm . net Framework 4.7.2),使用File.Move
的路径长于MAX_PATH(约260个字符)似乎也会触发此异常。
因此,在传递到File.Move
之前,我用长路径语法添加了我使用的路径,并且它有效。
// Prepend long file path support
if( !packageFile.StartsWith( @"''?'" ) )
packageFile = @"''?'" + packageFile;
看:如何处理文件名长于259个字符的文件?