例如,这样的事情失败了:
string oldfile = (@"C:\oldfile.txt");
string newfile = (@"C:\newfolder\newfile.txt");
System.IO.File.Move(oldfile, newfile);
程序因而崩溃“不支持给定路径的格式。”
编辑:我在Windows Forms项目与Console项目中这样做,这有什么不同?直觉上我不认为它应该,但你永远不会知道......
答案 0 :(得分:2)
问题是逐字字符串格式(@“...”)和转义斜杠(“\”)
的混合第二段代码
string oldFile = @"C:\\oldfile.txt"
创建一个'C:\\ oldfile.txt'的路径,该路径无法识别为有效路径。
使用您提供的第一个版本
string oldFile = @"C:\oldfile.txt"
或
string oldFile = "C:\\oldfile.txt"
答案 1 :(得分:0)
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);
如果目标不存在,请使用Directory.CreateDirectory
创建它答案 2 :(得分:0)
在以@为前缀的字符串文字中,以\开头的转义序列被禁用。这对于文件路径很方便,因为\是路径分隔符,您不希望它启动转义序列。
您只需使用以下内容:
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);
它没有崩溃。
答案 3 :(得分:0)
参考此MSDN文章
MSDN says to use like this
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)) {}
}