Я экспериментирую с новым 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
скопировать нужный файл.Интересно, возможно ли сделать этот трехступенчатый подход всего за один звонок? Спасибо.
std::filesystem::copy("(some directory)", "(some other directory)", std::filesystem::copy_options::recursive);
Источник: http://en.cppreference.com/w/cpp/filesystem/copy_options
Других решений пока нет …