C # переместить функцию

#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, если мы будем продолжать одновременно редактировать наши комментарии, ни один из них не будет иметь смысла. 😀