2015-09-18 20 views
4

Я не могу переименовать файл, расположенный в (D-диске), используя C#. Я получаю ошибкуПочему я получаю ошибку «Формат данного пути не поддерживается»

Сведения об исключении: 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, но я получаю такую ​​же ошибку. Я искал все вопросы по SO, но не повезло, я мог решить эту проблему. Я думаю, что есть некоторая проблема с «:», которую я использую после буквы диска при указании пути. Пожалуйста, направляйте меня.

+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. Фактически, если * это * работает, это означало бы наличие недопустимых символов 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 будет сгенерирован, если индекс из: на вашем пути находится на третьем месте или позже. (Можно было бы ожидать: быть вторым персонажем). Вы уверены, что в вашем источнике не используются символы с нулевой шириной или другие аналогичные юникодные махинации? от that answer

+1

ОП уже объяснил, что он попробовал это как литерал ('@') и избежал обратной косой черты. – LInsoDeTeh

+0

Пожалуйста, прочитайте вопрос еще раз. Я уже пробовал это без везения. – Thundrstorm

+3

, пожалуйста, укажите ссылку, откуда вы получили [это] (http://stackoverflow.com/a/24856870/1196295). – BhushanK

0

Почему вы используете don't:

My.Computer.Filesystem.RenameFile("D:\file.txt", "tree.txt") 
Смежные вопросы