std::experimental::filesystem:: copy_file
|
Определено в заголовке
<experimental/filesystem>
|
||
|
bool
copy_file
(
const
path
&
from,
const
path
&
to
)
;
bool copy_file ( const path & from, const path & to, error_code & ec ) ; |
(1) | (filesystem TS) |
|
bool
copy_file
(
const
path
&
from,
const
path
&
to, copy_options options
)
;
bool copy_file ( const path & from, const path & to, copy_options options, error_code & ec ) ; |
(2) | (filesystem TS) |
copy_options::none
в качестве
options
.
copy_file
).
- Если файл назначения не существует,
-
- копирует содержимое и атрибуты файла, на который указывает from в файл, на который указывает to (символические ссылки отслеживаются).
- В противном случае, если файл назначения уже существует:
-
- Если to и from идентичны согласно определению equivalent(from, to) , сообщить об ошибке.
- Иначе, если ни одна из опций управления copy_file не установлена в options , сообщить об ошибке.
-
Иначе, если
copy_options::skip_existingустановлена в options , ничего не делать. -
Иначе, если
copy_options::overwrite_existingустановлена в options , скопировать содержимое и атрибуты файла, на который указывает from , в файл, на который указывает to . -
Иначе, если
copy_options::update_existingустановлена в options , скопировать файл только если from новее чем to , согласно определению last_write_time() .
Непорождающие перегрузки возвращают false при возникновении ошибки.
Содержание |
Параметры
| from | - | путь к исходному файлу |
| to | - | путь к целевому файлу |
| ec | - | выходной параметр для сообщения об ошибках в непорождающей перегрузке |
Возвращаемое значение
true если файл был скопирован, false в противном случае.
Исключения
The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with from as the first argument, to as the second argument, and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload hasПримечания
Функции включают не более одного прямого или косвенного вызова
status(to)
(используется как для определения существования файла, так и, для опции
copy_options::update_existing
, времени его последней записи).
Ошибка возникает, когда
copy_file
используется для копирования директории: используйте
copy
для этой цели.
copy_file
следует по символьным ссылкам: используйте
copy_symlink
или
copy
с
copy_options::copy_symlinks
для этого.
Пример
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directory("sandbox"); std::ofstream("sandbox/file1.txt").put('a'); fs::copy_file("sandbox/file1.txt", "sandbox/file2.txt"); // теперь в sandbox два файла: std::cout << "file1.txt holds : " << std::ifstream("sandbox/file1.txt").rdbuf() << '\n'; std::cout << "file2.txt holds : " << std::ifstream("sandbox/file2.txt").rdbuf() << '\n'; // неудачная попытка копирования директории fs::create_directory("sandbox/abc"); try { fs::copy_file("sandbox/abc", "sandbox/def"); } catch (fs::filesystem_error& e) { std::cout << "Could not copy sandbox/abc: " << e.what() << '\n'; } fs::remove_all("sandbox"); }
Возможный вывод:
file1.txt holds : a file2.txt holds : a Could not copy sandbox/abc: copy_file: Is a directory: "sandbox/abc", "sandbox/def"
Смотрите также
|
определяет семантику операций копирования
(перечисление) |
|
|
копирует символическую ссылку
(функция) |
|
|
копирует файлы или директории
(функция) |