#c#
#c#
Вопрос:
Я хочу переместить файл и переименовать его, проблема в том, что я не знаю его расширения и оригинального имени, я выбираю с помощью openfile dialoge
любое предложение по решению этой
Ответ №1:
используйте File.Move.
Свойство FileName диалогового окна OpenFile должно указывать путь / имя файла, выбранного пользователем.
Комментарии:
1. да, но file.move нужен адресат, я знаю каталог назначения и новое имя, но я не знаю расширение
2. Вы можете использовать Path.GetFileExtension (или что-то в этом роде, не помню точное название функции, уточните в intellisence), чтобы получить расширение файла с заданным именем файла. И вы получили имя файла из свойства FileName.
Ответ №2:
Вы можете использовать Path.ChangeExtension
и Path.GetExtension
:
string oldFileName = /*...*/;
string newFileName = /*...*/;
string extension = Path.GetExtension(oldFileName);
string newFileNameWithExtension = Path.ChangeExtension(newFileName, extension);
Ответ №3:
this.openFileDialog1.ShowDialog();
int start = this.openFileDialog1.FileName.LastIndexOf('.') 1;
string newLoc = @"C:NewFileName."
this.openFileDialog1.FileName.Substring(start,3); //<-- gets the file extension
File.Move(this.openFileDialog1.FileName, newLoc);
Комментарии:
1. Вам действительно следует использовать методы для обработки расширений в классе Path. Они просто будут работать . Это приведет к сбою, если файл не имеет расширения. Или расширение, содержащее более или менее 3 символов (например, .cs или .html)
2. Я всегда использую это наречие, когда конечным результатом является завершение программы, в данном случае из-за
ArgumentOutOfRangeException
. Но поскольку есть и другие, менее впечатляющие результаты, я удалил ее.3. Вы, конечно, правы. Однако это было первое решение проблемы, которое пришло мне в голову. 🙂
4. @Martinho, если мы будем продолжать одновременно редактировать наши комментарии, ни один из них не будет иметь смысла. 😀