C ++: boost / filesystem: некоторые вопросы - PullRequest
3 голосов
/ 17 ноября 2010

Я использую библиотеку Boost в C ++, работающую в среде Ubuntu.У меня есть некоторые вопросы, которые мне не ясны:

  1. fs::is_directory

    namespace fs = boost::filesystem;
    
    
    fs::path full_path(fs::initial_path<fs::path>() );
    
    
    full_path = fs::system_complete(fs::path( "temp/"));
    
    
    if(fs::is_directory(full_path ))
    {
       cout << "the path is a directory" << endl;
    }
    else
    {
       cout << "the path is not a directory" << endl;
    }
    

    => Я уверен, что в тот момент, когда я запускаю программу,является каталогом temp в том же месте, где находится исполняемый файл.Но всегда возвращается: «путь не является каталогом»?

  2. fs::last_write_time

    • Может ли это fs::last_write_time(path) быть в состоянииполучить дату и время последнего изменения заданного пути для ОБА или каталога, или файла?

    • Если это верно и для каталога, верно ли это только для каталога, когда онбыл создан или последний раз, когда я добавляю файл в папку?

  3. fs::directory_iterator

    • fs::directory_iterator dir(full_path) => как я могу проверить, есть ли в этом 'dir' какие-либо подкаталоги или нет?
  4. Есть ли способ в boost :: fileSystem, чтобы проверить, является ли файлоткрытие?

Заранее спасибо, и я надеюсь, что вы поможете мне прояснить мой разум!

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010
  1. Похоже, это должно работать.Почему бы вам не поставить cout << fullpath перед if, чтобы убедиться, что путь действительно содержит то, что вы думаете?

  2. Я никогда не использовал last_write_time.Не могу помочь с этим.

  3. Вам нужно перебрать содержимое каталога и использовать fs::is_directory(dir->status()), чтобы определить, является ли данная запись каталога каталогом или нет.(при условии, что dir - итератор вашего каталога)

  4. Я не верю, что в boost :: filesystem есть что-то, что сообщило бы, открыт файл или нет.

0 голосов
/ 02 марта 2013

re 4 .: Разве вы не можете узнать, открыт ли файл в данный момент, просто позвонив [boost::filesystem|std]::fstream::is_open()?

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