Подтвердить что ты не робот

Добавить расширение файла в файл без расширения

Я пытаюсь добавить расширение к файлу, выбранному в OpenFileDialog в моем приложении С#. У меня возникают трудности с файлами, которые еще не имеют расширения.

Пока я не тестировал следующий метод для файлов с расширением, я знаю, что он не работает для файлов без расширения (на самом деле я хочу работать здесь).

string tPath = videoPath + videoName;
string tPath2 = Path.ChangeExtension(tPath, ".yuv");

tPath2 будет отражать изменение заголовка, но, похоже, он не влияет на сам файл, а только на строку, возвращаемую методом ChangeExtension. Я бы просто пошел и скопировал файл в новый с соответствующим именем и расширением, но мы говорим о огромных несжатых видеофайлах HD. Есть ли способ использовать tPath2 с объектом File или FileInfo, который мне не хватает?

Я ценю любую помощь, которую каждый может мне дать. Спасибо.

4b9b3361

Ответ 1

Чтобы выполнить переименование без необходимости делать копию, добавьте эту строку в конец:

System.IO.File.Move(tPath, tPath2);

(File.Move(src, dst) делает то же самое, что и FileInfo.MoveTo(dst))

Для вашей проблемы с файлами без расширения, попробуйте следующее:

if(string.IsNullOrEmpty(Path.GetExtension(tPath)){
  tPath += ".yuv";
}

Ответ 2

Класс Path просто позволяет вам выполнять манипуляции на пути к файлу (то есть string) на высоком уровне, а не в самом файле.

Вам нужно использовать File.Move, чтобы переименовать файл (включая просто добавление расширения).

string tPath = videoPath + videoName;
string tPath2 = Path.ChangeExtension(tPath, ".yuv");

File.Move(tPath, tPath2); //effectively changes the extension

Ответ 3

Чтобы переименовать файл, вам нужно позвонить FileInfo.MoveTo. Переименование файла на том же физическом диске, как правило, является быстрой операцией, поэтому не имеет большого значения, что файл огромен.

Ответ 4

Вы просто меняете имя файла, так почему бы вам просто не сделать "mypath" + ".ext"?

Нет ничего об изменении размера файла, которое должно изменить содержимое файла, оно просто сообщает ОС, что с ним делать.