Перейти к содержимому

Как переименовать файл в с

  • автор:

Функция rename

Функция rename изменяет имя файла или каталога, указанного в oldfilename на новое имя, указанное в newfilename .
Если в oldfilename и newfilename указать разные пути, и, если это поддерживается системой, файл будет перемещен в новое место.
Эта операция производится непосредственно с файлом, нет потоков, участвующих в операции.

Параметры:

  • oldfilename
    Cи-строка, содержащая имя файла, который будет переименован и (или) перемещен. Этот файл должен существовать и быть доступным.
  • newfilename
    Cи-строка, содержащая новое имя файла. Она не должно быть именем существующего файла, если это так, то результат работы программы будет непредсказуем, а точнее, он будет зависеть от того, как среагирует используемая ОС, может быть или отказ или переопределение.

Возвращаемое значение

Если файл успешно переименован, возвращается нулевое значение.
В случае ошибки, возвращается ненулевое значение и макрос ERRNO инициализируется соответствующим кодом ошибки.

Ошибка — числовое значение, представляющее тип сбоя.

Строка, интерпретирующая это значение может быть выведена на стандартный поток ошибок при вызове функции perror .

Пример: исходный код программы

// пример использования функции: rename для переименования файла #include // для оператора cout #include // для функции rename int main () < char oldfilename[] = "oldfilename.txt"; // старое имя файла char newfilename[] = "newfilename.txt"; // новое имя файла if ( rename( oldfilename, newfilename ) == 0 ) // переименование файла std::cout

Пример работы программы

Если файл oldfilename.txt может быть успешно переименован в newfilename.txt , следующее сообщение будет выведено на стандартный вывод:

CppStudio.com
Файл успешно переименован

В противном случае, сообщение, похожее на это будет показано на экране:

Изменение имени файла в C# (си шарп)

Появилась задача считать и переименовать файлы в папке, но не слишком хорошо понимаю как это сделать через move(((
Вот код как считываю. надо к имени файла добавить символы с начала и с конца и поменять формат

 DirectoryInfo directorya = new DirectoryInfo(@"C:\Users\a\Desktop\PB4V35+"); foreach (var spysok in directorya.GetFiles("*.MST")) Console.WriteLine(spysok); 

через move это так:

 File.Move(oldFileName, newFileName); 

указываем старое имя (какой файл нужно переименовать) и новое имя (в какое надо переименовать).

например, если нужно в начале каждого имени *.txt дописать ff:

  DirectoryInfo d = new DirectoryInfo(@"c:\dir\"); FileInfo[] infos = d.GetFiles("*.txt"); foreach(FileInfo f in infos) < File.Move(f.FullName, Path.Combine(f.DirectoryName, "ff" + f.Name)); > 

Случайные статьи

  • Подсчитать количество точек в строке
  • Как заблокировать раздел жесткого диска от записи?
  • Поиск и подсчет слов в Memo
  • Построчные способы загрузки информации в memo
  • Как сделать выпадающий список с добавлением новых элементов?
  • Вывод текста из файла случайным образом
  • Очистить все edit’ы на форме
  • Получить температуру процессора
  • Сортировка массива методом пузырька. Пример.
  • Использовать компонент в своей процедуре

Купить рекламу на сайте за 1000 руб

пишите сюда — alarforum@yandex.ru


Да и по любым другим вопросам пишите на почту

  • Форум Web программирование (веб)
    • Форум Python (питон)
    • Форум PHP (пхп)
    • Форум Perl (перл)
    • Форум Ruby (руби)
    • Форум JavaScript (яваскрипт)
    • Форум Ajax (аякс)
    • Форум SQL (эскюэл)
    • Форум HTML (хтмл)
    • Форум CSS (сиэсэс)
    • Форум XML (иксмл)
    • Форум JSON (джсон)
    • Форум Pascal (паскаль)
    • Форум Delphi (делфи)
    • Форум C++ (си плюс плюс)
      • Форум C++ Builder (си билдер)
      • Форум Visual C++ (визуал си)
      • Форум .NET (точка нет)
      • Форум ASP.NET (асп нет)
      • Форум Windows Forms (виндовс формс)
      • Форум базы данных ADO.NET (адо нет)
      • Форум .NET Framework WPF, UWP, WinRT, XAML ()
      • Форум Java Android (джава андроид)
      • Форум Java web (джава веб)
      • Форум Kotlin (котлин)
      • Форум Assembler (ассемблер)
      • Форум WinApi (вин апи)
      • Форум Excel (эксель)
      • Форум Word (ворд)
      • Форум Access (аксесс)
      • Форум по администрированию ОС
      • Форум по администрированию серверов и VDS
      • Форум Windows
      • Форум Ubuntu
      • Форум Android

      Переименование файлов

      Как сделать такое задание: Перед каждым именем файла (regular file) вставить его номер (1, 2, 3 и т. д.). Номер выставляется в соответствии с тем, в каком порядке выдает результаты функция FindFirstFile, FindNextFile. Смог сделать только это:

      #include #include #include using namespace std; //strcpy, strcat //_tcscpy,_tcscat int main() < DWORD dwError = 0; setlocale(LC_ALL, "rus"); WIN32_FIND_DATA find; HANDLE hFind = FindFirstFile(_T("C:\\test\\*"), &find); < if (INVALID_HANDLE_VALUE == hFind) < cout do < if (!(find.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) && !(find.dwFileAttributes == FILE_ATTRIBUTE_DEVICE)) _tprintf(_T("%s\n"), find.cFileName); >while (FindNextFile(hFind, &find) != NULL); dwError = GetLastError(); if (dwError == ERROR_NO_MORE_FILES) < FindClose(hFind); cout >////нет проверки на успешность FindFirstFile FindClose(hFind); ////нет проверки на успешность FindClose cout

      А как переименовывать файлы не понимаю
      Отслеживать
      задан 6 янв 2017 в 15:05
      21 1 1 серебряный знак 2 2 бронзовых знака

      3 ответа 3

      Сортировка: Сброс на вариант по умолчанию

      Для переименования файлов есть сишная функция rename()

      int rename(const char *old_filename, const char *new_filename) 
      BOOL WINAPI MoveFile( _In_ LPCTSTR lpExistingFileName, _In_ LPCTSTR lpNewFileName ); 

      Но учтите, что переименовывать файлы внутри цикла FindFirstFile / FindNextFile нельзя. Иначе цикл будет находить новые файлы.

      Вам нужно в этом цикле сложить все имена файлов в массив, вызвать FindClose() , а потом пробежаться по этому массиву и переименовать файлы

      Статья C# Как переименовать файл?

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

      Решение:
      Для начала создадим обычное Windows Forms приложение, после чего на форму поместим одну кнопку и один control folderBrowserDialog, который переименуем в fbd.

      Поместите код в обработчик события Button.Click

      private void button1_Click(object sender, EventArgs e) < //с помощью диалога выбираем папку с файлами DialogResult result = fbd.ShowDialog(); if (result == DialogResult.OK) < //Получить все файлы в папке string [] files = Directory.GetFiles(fbd.SelectedPath); int ind = 0; for (int i=0; i < files.Length; i++) < //поиск индекса последнего слеша ind = files[i].LastIndexOf('\\'); //переименование File.Move(files[i], files[i].Remove(ind + 1) + i +".txt"); >MessageBox.Show("Готово!"); > >

      Основные моменты

      using System.IO;

      1. Получаем все файлы в выбранной директории и загоняем их в массив.
      Содержимое массива files:

      files[0] = C:\ff\Текстовый документ.txt files[1] = C:\ff\Текстовый документ(2).txt

      Как видно в массиве храниться полный путь к каждому файлу.

      2. Переименование файла будет осуществляться при помощи метода Move, в который передается два параметра: полный путь к файлу, который нужно перенести или переименовать и новый путь + новое имя файла, либо текущий путь + новое имя файла.
      Так как в этом примере файл перемещать не требуется, то изменим лишь только имя файла.

      File.Move(@"C:\ff\Текстовый документ.txt", @"C:\ff\0.txt");

      3. Первый параметр у нас уже есть, он хранится в массиве files, осталось получить второй параметр.

      Для начала нужно удалить старое имя файла
      C:\ff\ — путь Текстовый документ — имя файла .txt — расширение

      Воспользуемся методом LastIndexOf(), который в строке
      C:\ff\Текстовый документ.txt

      найдет индекс последнего слеша после чего, используя метод Remove, удалим всё, что идёт после него.
      C:\ff\Текстовый документ.txt -> C:\ff\

      После чего добавляем новое имя файла и расширение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *