2015-09-18 54 views
4

我無法使用c#重命名位於(D驅動器)中的文件。我得到錯誤爲什麼我得到「給定路徑的格式不支持」錯誤

異常詳細信息:System.NotSupportedException:不支持給定路徑的 格式。

每次。

我使用

string oldfilename = @"D:\abc\file.txt"; 
string newfilename = @"D:\abc\tree.txt"; 
System.IO.File.Move(oldfilename, newfilename); 

,但我得到的最後一行的錯誤。 我也嘗試的第一個2線變爲

string oldfilename = "D:\\abc\\file.txt"; 
string newfilename = "D:\\abc\\tree.txt"; 

我也確保了文件「file.txt的」存在。試圖使用不同的位置。

我也嘗試閱讀file.txt的內容,但我得到同樣的錯誤。 我搜索了所有的問題,但沒有運氣,我可以解決這個問題。我認爲在指定路徑時我在驅動器盤符後面使用了「:」這個問題。請指導我。

+0

@TomDoesCode是*威力*是重複的,但很難說這是否是同樣的問題。 – crashmstr

+3

這是*真的*代碼嗎?或者你是否發佈了實際代碼的修改版本? –

+0

這就是代碼!即使我很驚訝,它爲什麼會給出這個錯誤! – Thundrstorm

回答

0

我在另一臺電腦上試過這個,但它仍然沒有工作!(令人驚訝)。 我已經設法通過將「file.txt」移動到我的項目文件夾來解決此問題。 現在我正在使用

string oldfilename = "file.txt"; 
string newfilename = "tree.txt"; 
System.IO.File.Move(oldfilename, newfilename); 

而且這個作品! 這似乎不是這個問題的答案(對我來說),但它確實對我有用。

+0

這不會回答任何問題。相對路徑和絕對路徑都適用於File.Move。實際上,如果* this *起作用,則意味着文件夾路徑中存在無效的Unicode字符('D:\ abc'),而不是文件名 –

-2

我嘗試通過自己和這些變異的工作:

 string oldfilename = "C:\\Users\\User\\Downloads\\WorkTemp\\file.txt"; 
     string newfilename = "C:\\Users\\User\\Downloads\\WorkTemp\\file2.txt"; 
     System.IO.File.Move(oldfilename, newfilename); 


     string oldfilename = @"C:\Users\User\Downloads\WorkTemp\file1.txt"; 
     string newfilename = @"C:\Users\User\Downloads\WorkTemp\file2.txt"; 
     System.IO.File.Move(oldfilename, newfilename); 

根據參考源:http://referencesource.microsoft.com/#mscorlib/system/io/filestream.cs#749

如果該指數NotSupportedException異常將被拋出:在您的路徑是在第三位置或更晚。 (人們會期望:成爲第二個字符)你確定在你的源代碼中沒有零寬度的組合字符或其他類似的Unicode shenanigans嗎? from that answer

+1

OP已經解釋說他將其作爲文字('@')進行了嘗試,並跳過了反斜槓。 – LInsoDeTeh

+0

請再次閱讀該問題。我已經嘗試過,但沒有運氣。 – Thundrstorm

+3

請參考你從哪裏得到[this](http://stackoverflow.com/a/24856870/1196295)。 – BhushanK

0

爲什麼難道你不使用:

My.Computer.Filesystem.RenameFile("D:\file.txt", "tree.txt") 
相關問題