例如,这样的事情失败了:
string oldfile = (@"C:\oldfile.txt");
string newfile = (@"C:\newfolder\newfile.txt");
System.IO.File.Move(oldfile, newfile);
程序崩溃并显示“不支持给定路径的格式”。
编辑:我在 Windows 窗体项目与控制台项目中这样做,这有什么不同吗?直觉上我不认为它应该,但你永远不知道......
例如,这样的事情失败了:
string oldfile = (@"C:\oldfile.txt");
string newfile = (@"C:\newfolder\newfile.txt");
System.IO.File.Move(oldfile, newfile);
程序崩溃并显示“不支持给定路径的格式”。
编辑:我在 Windows 窗体项目与控制台项目中这样做,这有什么不同吗?直觉上我不认为它应该,但你永远不知道......
问题是逐字字符串格式(@"...")和转义斜杠("\")的混合
第二段代码
string oldFile = @"C:\\oldfile.txt"
创建一个不被识别为有效路径的“C:\\oldfile.txt”路径。
使用您提供的第一个版本
string oldFile = @"C:\oldfile.txt"
或者
string oldFile = "C:\\oldfile.txt"
string oldfile = (@"C:\oldfile.txt");
string newfile = (@"C:\newfolder\newfile.txt");
System.IO.File.Move(oldfile , newfile );
或字符串 oldfile = ("C:\oldfile.txt"); 字符串 newfile = (@"C:\newfolder\newfile.txt"); System.IO.File.Move(旧文件,新文件);
如果目录不存在,则使用 Directory.CreateDirectory 创建它
在以 @ 为前缀的字符串文字中,以 \ 开头的转义序列被禁用。这对于文件路径很方便,因为 \ 是路径分隔符,您不希望它启动转义序列。
您只需使用以下一个:
string oldfile = ("C:\\oldfile.txt");
string newfile = ("C:\\newfolder\\newfile.txt");
System.IO.File.Move(oldfile, newfile);
或者
string oldfile = (@"C:\oldfile.txt");
string newfile = (@"C:\newfolder\newfile.txt");
System.IO.File.Move(oldfile, newfile);
它可以正常工作而不会崩溃。
参考这篇 MSDN 文章
MSDN 说要这样使用
string path = @"C:\oldfile.txt";
string path2 = @"C:\newfolder\newfile.txt";
if (!File.Exists(path))
{
// This statement ensures that the file is created,
// but the handle is not kept.
using (FileStream fs = File.Create(path)) {}
}