Добавить расширение файла в файл без расширения
Я пытаюсь добавить расширение к файлу, выбранному в OpenFileDialog
в моем приложении С#. У меня возникают трудности с файлами, которые еще не имеют расширения.
Пока я не тестировал следующий метод для файлов с расширением, я знаю, что он не работает для файлов без расширения (на самом деле я хочу работать здесь).
string tPath = videoPath + videoName;
string tPath2 = Path.ChangeExtension(tPath, ".yuv");
tPath2
будет отражать изменение заголовка, но, похоже, он не влияет на сам файл, а только на строку, возвращаемую методом ChangeExtension
. Я бы просто пошел и скопировал файл в новый с соответствующим именем и расширением, но мы говорим о огромных несжатых видеофайлах HD. Есть ли способ использовать tPath2
с объектом File
или FileInfo
, который мне не хватает?
Я ценю любую помощь, которую каждый может мне дать. Спасибо.
Ответы
Ответ 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"?
Нет ничего об изменении размера файла, которое должно изменить содержимое файла, оно просто сообщает ОС, что с ним делать.