Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/40: Рейтинг темы: голосов - 40, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 80

Копирование файлов

31.07.2012, 04:00. Показов 8226. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане, подскажите как скопировать файл из одной директории в другую?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2012, 04:00
Ответы с готовыми решениями:

Программное копирование файлов в UNIX(на примере Ubuntu)
Под Windows есть замечательная функция CopyFile(LPCTSTR Копируемый файл, LPCTSTR Новое место копируемого файла,BOOL bFailIfExists(True -...

Напишите makefile, который осуществляет резервное копирование файлов
Напишите makefile, который осуществляет резервное копирование файлов. Вызывается при помощи make bckp, файлы копируются в директорию...

Копирование: Ввод имени папки и копирование из нее файлов
Доброго времени суток! Реально ли реализовать подобное с помощью bat ? Знаю, что можно создать папку с именем, которое можно задать. ...

4
2 / 2 / 0
Регистрация: 18.08.2011
Сообщений: 17
31.07.2012, 05:21
Через system можно используя команду cp (copy files and directories) это башовая команда
а если чисто на Си, то fread(), fwrite().
0
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 80
31.07.2012, 15:28  [ТС]
Да мне бы пример, ну например как text.txt скопировать?

Добавлено через 1 час 11 минут
Нашел вроде, как можно скопировать:
C++
1
2
3
4
5
6
7
                    std::ifstream ifs(1.txt);
                    std::ofstream ofs(2.txt);
 
                    std::string str;
 
                    while (std::getline(ifs,str))
                    ofs << str << '\n';
Но возникла проблема, как не указывать файл в который копируется, т.е. мне нужно просто указать имя файла который копируется и директорию, куда этот файл копируется.
0
 Аватар для Roof
155 / 155 / 44
Регистрация: 03.11.2010
Сообщений: 393
31.07.2012, 16:56
Используя boost решить Вашу задачу несложно.
Вот набросал Вам пример для Вашего условия
Цитата Сообщение от Koss Посмотреть сообщение
Но возникла проблема, как не указывать файл в который копируется, т.е. мне нужно просто указать имя файла который копируется и директорию, куда этот файл копируется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cstdlib>
#include <boost/filesystem.hpp>
 
namespace fs = boost::filesystem;
 
int main() {
 
    fs::path file_source; // путь до копируемого файла
    std::cout << "Введите полный путь до копируемого файла" << std::endl;
    std::cin >> file_source;
 
    //Проверка существует ли копируемый файл ( и не является ли он директорией или еще чем-то :-) )
    if ( !fs::is_regular_file( file_source ) ) {
        std::cout << "Копируемого файла не существует или неверно задано его имя!" << std::endl;
        return EXIT_FAILURE;
    }
 
    fs::path directory_dest; // полный путь до директории в которую копируем файл
    std::cout << "Введите полный путь до директории в которую копируем файл" << std::endl;
    std::cin >> directory_dest;
 
    //Проверка существует ли директория и является ли введенный путь путем директории
    if ( !fs::is_directory( directory_dest ) ) {
        std::cout << "Директории не существует или неверно задано ее имя!" << std::endl;
        return EXIT_FAILURE;
    }
 
    directory_dest /= file_source.filename(); // добавляем к пути директории имя копируемого файла
 
    try {
        // копирует файл по назначенному пути с заменой существующего файла
        fs::copy_file( file_source, directory_dest, fs::copy_option::overwrite_if_exists );
        std::cout << "Файл успешно скопирован!" << std::endl;
    } catch ( const fs::filesystem_error& e ) {
        std::cout << "Ошибка копирования!" << std::endl;
        std::cerr << "Error: " << e.what() << std::endl;
    }
 
    return 0;
}
/home/roof/ogl является директорией.
/home/roof/wget-log является файлом.

Консоль 1
Введите полный путь до копируемого файла
/home/roof/wget-log
Введите полный путь до директории в которую копируем файл
/home/roof/ogl
Файл успешно скопирован!


Консоль 2
Введите полный путь до копируемого файла
/home/roof/ogl
Копируемого файла не существует или неверно задано его имя!


Консоль 3
Введите полный путь до копируемого файла
/home/roof/wget-log
Введите полный путь до директории в которую копируем файл
/home/roof/og
Директории не существует или неверно задано ее имя!


По ссылке про работу с файловой системой с использованием boost много информации.
http://live.boost.org/doc/libs... orial.html
1
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 80
31.07.2012, 19:41  [ТС]
Цитата Сообщение от Roof Посмотреть сообщение
Используя boost решить Вашу задачу несложно.
Вот набросал Вам пример для Вашего условия

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cstdlib>
#include <boost/filesystem.hpp>
 
namespace fs = boost::filesystem;
 
int main() {
 
    fs::path file_source; // путь до копируемого файла
    std::cout << "Введите полный путь до копируемого файла" << std::endl;
    std::cin >> file_source;
 
    //Проверка существует ли копируемый файл ( и не является ли он директорией или еще чем-то :-) )
    if ( !fs::is_regular_file( file_source ) ) {
        std::cout << "Копируемого файла не существует или неверно задано его имя!" << std::endl;
        return EXIT_FAILURE;
    }
 
    fs::path directory_dest; // полный путь до директории в которую копируем файл
    std::cout << "Введите полный путь до директории в которую копируем файл" << std::endl;
    std::cin >> directory_dest;
 
    //Проверка существует ли директория и является ли введенный путь путем директории
    if ( !fs::is_directory( directory_dest ) ) {
        std::cout << "Директории не существует или неверно задано ее имя!" << std::endl;
        return EXIT_FAILURE;
    }
 
    directory_dest /= file_source.filename(); // добавляем к пути директории имя копируемого файла
 
    try {
        // копирует файл по назначенному пути с заменой существующего файла
        fs::copy_file( file_source, directory_dest, fs::copy_option::overwrite_if_exists );
        std::cout << "Файл успешно скопирован!" << std::endl;
    } catch ( const fs::filesystem_error& e ) {
        std::cout << "Ошибка копирования!" << std::endl;
        std::cerr << "Error: " << e.what() << std::endl;
    }
 
    return 0;
}
/home/roof/ogl является директорией.
/home/roof/wget-log является файлом.

Консоль 1
Введите полный путь до копируемого файла
/home/roof/wget-log
Введите полный путь до директории в которую копируем файл
/home/roof/ogl
Файл успешно скопирован!


Консоль 2
Введите полный путь до копируемого файла
/home/roof/ogl
Копируемого файла не существует или неверно задано его имя!


Консоль 3
Введите полный путь до копируемого файла
/home/roof/wget-log
Введите полный путь до директории в которую копируем файл
/home/roof/og
Директории не существует или неверно задано ее имя!


По ссылке про работу с файловой системой с использованием boost много информации.
http://live.boost.org/doc/libs... orial.html
Спасибо огромнейшее!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2012, 19:41
Помогаю со студенческими работами здесь

Копирование файлов из одной папки в другую, но с пропуском одинаковых файлов в этих папках
Доброго времени суток. Прошу помощи в написании батника. Задача: Есть папка А с файлами 1,2,3 и папка Б с этими же файлами 1,2 и 3. ...

Копирование файлов из разных каталогов в каталоги с именами, соответствующими номерам в именах файлов
Добрый день! Помогите решить проблему. Есть семь папок (cam_1, cam_2, cam_3 и.т.д) с фотографиями (cam_1_00052.JPG, cam_1_00053.JPG,...

Копирование файлов по списку в текстовом файле в папки с именами, соответствующими расширениям этих файлов
Добрый день, уважаемые форумчане. Прошу помощи с написанием bat-файла. Значит задача такая. Есть у нас помойка с множеством файлов и...

Копирование файлов с переименованием в случае совпадения имён копируемых и имеющихся в папке назначения файлов
Доброго времени суток. Убедительная просьба, помогите пожалуйста решить задачу. Существует исходный путь (SrcDir), который идет до...

Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов
Добрый день. Помогите создать bat файл. Смысл в чем есть папка загрузки на компьютере с нее файлы и папки содержащиеся в ней должны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru