Ускорение: ошибка копирования_файла при отказе в доступе, но нет проблем с правами доступа - PullRequest
2 голосов
/ 17 ноября 2010

Я написал следующую процедуру, чтобы скопировать все файлы в каталоге в подкаталог и затем удаляю их, но я продолжаю получать отказ в доступе к copy_fail, который выглядит вводящим меня в заблуждение. Пути исправлены, файлы существуют, а разрешения не доступны только для чтения в только что созданном каталоге назначения.

Любое предложение, как найти источник проблемы?

Я попытался отладить, но у меня нет исходного кода boost :: filesystem.

Любое предложение приветствуется.

void
moveConfigurationFileToSubDirectory()
{
 // TODO: Catch errors.

 boost::filesystem::path full_path( boost::filesystem::current_path() );

 // Create directory subdir if not exist
 boost::filesystem::path subdirPath(kSubdirectory);
    if ( !boost::filesystem::exists(subdirPath) )
 {
  PLog::DEV.Development(devVerbose, "%s: creating directory %s", __FUNCTION__, subdirPath.string());
  boost::filesystem::create_directories(subdirPath);
 } else
  PLog::DEV.Development(devVerbose, "%s: directory %s exist", __FUNCTION__, subdirPath.string());

 // Iterate through the configuration files defined in the static array
 // copy all files with overwrite flag, if successfully delete file (looks like there is not remove)
 for (int i = 0; i < kNumberOfConfigurationFiles; i++)
 {
  boost::filesystem::path currentConfigurationFile(kConfigurationFiles[i]);

  try
  {
   boost::filesystem::copy_file(currentConfigurationFile, subdirPath, boost::filesystem::copy_option::overwrite_if_exists);
   boost::filesystem::remove(currentConfigurationFile);
  }
  catch (exception& e)
  {
   PLog::DEV.Development(devError, "%s: exception - %s", __FUNCTION__, e.what());
  }
 }
}

Ответы [ 2 ]

7 голосов
/ 11 декабря 2012

Вы должны указать желаемое имя файла для subdirPath, а не просто путь.Ускоренный copy_file недостаточно хорош, чтобы понять, что, указав имя каталога, вы хотите, чтобы файл имел то же имя, что и источник.

0 голосов
/ 17 ноября 2010

На каких ОС это работает? Если в Linux / Unix вы рассматривали разрешения для каталога, содержащего ваши исходные файлы (вы удаляете currentConfigurationFile, это означает, что каталог, содержащий этот файл, должен иметь разрешение на запись)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...