2012-07-12 45 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

相關問題