0

例如,这样的事情失败了:

string oldfile = (@"C:\oldfile.txt");
string newfile = (@"C:\newfolder\newfile.txt");
System.IO.File.Move(oldfile, newfile);

程序崩溃并显示“不支持给定路径的格式”。

编辑:我在 Windows 窗体项目与控制台项目中这样做,这有什么不同吗?直觉上我不认为它应该,但你永远不知道......

4

4 回答 4

2

问题是逐字字符串格式(@"...")和转义斜杠("\")的混合

第二段代码

string oldFile = @"C:\\oldfile.txt"

创建一个不被识别为有效路径的“C:\\oldfile.txt”路径。

使用您提供的第一个版本

string oldFile = @"C:\oldfile.txt"

或者

string oldFile = "C:\\oldfile.txt"
于 2012-07-12T08:16:50.220 回答
0
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 创建它

于 2012-07-12T08:13:23.707 回答
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);

它可以正常工作而不会崩溃。

于 2012-07-12T08:16:56.257 回答
0

参考这篇 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)) {}
            }
于 2012-07-12T08:20:48.523 回答