2012-07-12 24 views
0

例如,这样的失败:System.IO.File.Move不支持以前定义的字符串吗?

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

计划与崩溃“指定路径的格式不支持。”

编辑:我正在做一个Windows窗体项目与控制台项目,这是否有所作为?直觉上我不认为它应该,但你永远不知道...

+1

你为什么把字符串值加上括号? – 2012-07-12 08:13:32

+0

我看不出第一个版本有什么问题。第二个显然是错误的(你将在文件名中有\\)。你能发布一个完整的控制台应用程序,演示这个问题? – 2012-07-12 08:14:50

+0

re:括号呵呵。这个数字只是一个愚蠢的错误......现在已经很晚了,我之前正在和其他一些语言合作。谢谢你指出,虽然。 – Sduibek 2012-07-12 08:16:04

回答

2

问题创造它是逐字字符串格式的转义斜杠

混合物(@“......”)和(‘\’)第二段代码

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

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

或者使用的第一个版本,你给

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

string oldFile = "C:\\oldfile.txt" 
+2

他说第一个版本不起作用,那么你如何解释? – 2012-07-12 08:18:11

+0

我的不好,要么我没有完全读完这个问题,要么编辑改变了这种风格 - 我认为这是第二个(现在失踪)的错误段落。没有理由为什么显示的代码应该给出错误。我试了一下,它工作正常。该消息不是来自System.IO.File,它看起来是一个本机win32消息,但我没有追赶它。 – AlanT 2012-07-12 08:32:29

+0

对不起,这是我编辑它的错。 – Sduibek 2012-07-12 08:39:17

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

或 字符串的oldfile =( “C:\ oldfile.txt”); string newfile =(@“C:\ newfolder \ newfile.txt”); System.IO.File.Move(oldfile,newfile);

如果不存在direcotry,与Directory.CreateDirectory

+1

“不支持给定路径的格式”与丢失的目录无关。 – 2012-07-12 08:17:27

+0

对不起,把它放在错误的地方。移动到我的回答 – AlanT 2012-07-12 08:32:08

0

在文字前面加上@开始\转义序列的字符串被禁用。这对文件路径很方便,因为\是路径分隔符,您不希望它启动转义序列。

您只需使用以下之一:

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

OR

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

它的工作原理没有崩溃。

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)) {} 
      } 
+0

我其实并不认为括号或变量名称会有所作为。 – 2012-07-12 08:22:44

+0

我不是要求你改变变量名称,只是检查MSDN链接,它显示了如何使用File.Move()..并且我认为你已经完全像那样使用了。 – 2012-07-12 08:23:57

+0

其实我之前读过那篇文章,除非我完全错过了某些可能无法使用的东西(使用 if(!File.Exists(path_here)) {} 无论{}或路径中有什么,我都会得到 **错误名称'文件'在当前上下文中不存在** – Sduibek 2012-07-12 08:36:47

相关问题