Можно ли автоматически создавать несуществующие каталоги при копировании файла?
Я экспериментирую с новым std::filesystem
библиотека. Я хочу сделать программу, которая копирует файлы, перечисленные пользователем в заданный каталог. Но наивный подход с использованием std::filesystem::copy
или же std::filesystem::copy_file
не работает, когда указанный файл находится в подкаталоге.
Например, предположим, что я хочу скопировать некоторые файлы в (some directory)
, сказать
(some directory)/file1.ext
(some directory)/subdir/file2.ext
в (some other directory)
так, чтобы я получил
(some other directory)/file1.ext
(some other directory)/subdir/file2.ext
Каталог (some directory)
могут содержать файлы или каталоги и т. д., которые не нужно копировать. Если я использую только std::filesystem::copy
, затем file1.ext
успешно, но files2.ext
не удается, когда нет (some other directory)/subdir
,
Обходной путь был
- Вызов
std::filesystem::path::remove_filename
чтобы получить путь к каталогу. - Вызов
std::filesystem::create_directories
создавать каталоги, если они не существуют. - Вызов
std::filesystem::copy
скопировать нужный файл.
Интересно, возможно ли сделать этот трехступенчатый подход всего за один звонок? Спасибо.
1 ответ
std::filesystem::copy("(some directory)", "(some other directory)", std::filesystem::copy_options::recursive);
Источник: http://en.cppreference.com/w/cpp/filesystem/copy_options