Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
1

Boost::filesystem::copy_file не копирует файлы

10.05.2014, 15:21. Показов 2492. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код:
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
#include <iostream>
#include <vector>
#define BOOST_NO_CXX11_SCOPED_ENUMS
#include <boost/filesystem.hpp>
#include <windows.h>
 
namespace fs = boost::filesystem;
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
    fs::path from_dir("D:\\from");
    fs::path to_dir("D:\\to");
 
    try {
        std::vector<fs::path> copy_files{fs::directory_iterator(from_dir), fs::directory_iterator()};
 
        for (auto& file : copy_files) {
            std::cout << "copy file: " << file.filename() << ":\n";
            fs::copy_file(file, to_dir, fs::copy_option::overwrite_if_exists);
        }
 
    }
    catch(fs::filesystem_error& e) { std::cerr << e.what(); }
 
 
    return 0;
}
В результате папка to пуста. В консоли выводится только одно сообщение касательно первого файла в списке:
boost::filesystem::copy_file: Операция успешно завершена:
и все стоит на месте. В чем проблема?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2014, 15:21
Ответы с готовыми решениями:

Просмотреть с помощью boost::filesystem все файлы в рандомном каталоге, и вывести названия файлов
Доброго времени суток, помогите плиз. Как с помощью библиотеки boost::filesystem просмотреть все...

copy_file() boost
Доброго времени суток. Подскажите пожалуйста 1. Как можно при помощи...

boost.filesystem
Всем привет! Проблема в следующем. Если пытаюсь скомпилировать код, содержащий включение каких...

boost::filesystem
Доброго времени суток. Подскажите пожалуйста, как можно преобразовать path в char*?

3
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.05.2014, 19:49 2
Лучший ответ Сообщение было отмечено DiffEreD как решение

Решение

Мм..

Я попробовал в С++BuilderXE3

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
        std::string from_dir("from");
        std::string to_dir("to");
 
        try {
                 fs::directory_iterator first(from_dir);
                 fs::directory_iterator last;
 
                 for(; first!=last; ++first)
                 {
                     std::cout<< first->leaf()<<std::endl;
                     fs::copy_file(*first, fs::path(to_dir+"/"+first->leaf()));
                 }
        }
        catch(fs::filesystem_error& e) { std::cerr << e.what(); }
 
        getchar();
        return 0;
}
Работает.

Что за fs::copy_option::overwrite_if_exists ? И какая версия буста ?
1
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.05.2014, 00:40  [ТС] 3
Avazart, спасибо. Что то я забыл что надо указывать полный path местоназначения. Все работает. Переправил на:
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
#include <iostream>
#include <vector>
#define BOOST_NO_CXX11_SCOPED_ENUMS
#include <boost/filesystem.hpp>
#include <windows.h>
 
namespace fs = boost::filesystem;
 
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
 
    fs::path from_dir("D:\\from");
    fs::path to_dir("D:\\to");
    try {
        std::vector<fs::path> copy_files{fs::directory_iterator(from_dir), fs::directory_iterator()};
 
        for (auto& file : copy_files) {
            std::cout << "copy file: " << file.filename() << ":\n";
            fs::copy_file(file, to_dir/file.filename().string(), fs::copy_option::overwrite_if_exists);
        }
 
    }
    catch(fs::filesystem_error& e) { std::cerr << e.what(); }
 
    return 0;
}
Добавлено через 2 минуты

Не по теме:

Кстати, а leaf() в версии 1.55 уже deprecated

1
Avazart
11.05.2014, 00:44     Boost::filesystem::copy_file не копирует файлы
  #4

Не по теме:

Цитата Сообщение от DiffEreD Посмотреть сообщение
Кстати, а leaf() в версии 1.55 уже deprecated
Ну в Builder boost 1.39 кажется, а VC++ мне просто харило запускать и еще вспоминать где буст лежит.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2014, 00:44

boost filesystem
Всем привет! В студии при построении проекта с подключенным boost/filesystem.hpp ошибка LINK :...

boost::filesystem и искючения
При поиске файлов к примеру на диске C:\ можно получить к примеру такое сообщение. После чего...

не могу разобраться c boost.filesystem
не как не могу разобрать с boost.filesystem. Нужно записать содиржимое католога в массив. Но не как...

boost::filesystem Относительный путь
Допустим есть путь Можно ли (и как ?) получить путь относительно другого пути ( или текущего...

Не удается подключить boost::filesystem
Решил начать изучать boost::filesystem - в итоге ошибки линковщика. Делал все как здесь начиная с...

[Code::Blocks] Не работает Boost.Filesystem
Есть скомпилированный Boost (MinGW 6.3.0), Code::Blocks 16.01, Boost 1.65. Подключаю Boost к...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru