我正在尝试使用boost :: filesystem :: copy_file和system :: error_code参数将文件复制到目标位置,因为我不希望引发异常。
该函数接受一个参数,如果文件已经存在且名称相同,是否会失败,这就是我想要的行为。从http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html#copy_file:
效果:如果option == copy_option :: fail_if_exists &&存在,则报告错误。
但是,我找不到我应该期待的错误代码。这取决于底层操作系统吗?
是的,它取决于底层操作系统。源代码表明copy_file()
(和其他操作)会产生如下错误:
if (ec == 0)
BOOST_FILESYSTEM_THROW(filesystem_error(message,
p, error_code(BOOST_ERRNO, system_category())));
else
ec->assign(BOOST_ERRNO, system_category());
system_category()
指定源自操作系统的错误,BOOST_ERRNO
在Posix系统上为errno
。
在Posix上,对open()
withO_CREAT
和的基础调用O_EXCL
将失败,并设置errno
为EEXIST
文件已存在时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句