Как использовать std :: fstream, boost или что-то еще для создания файла папки - PullRequest
0 голосов
/ 24 июля 2011

Эй, я только что узнал о вводе-выводе STL, что привело меня к повышению :: Serialize и Archive, и поэтому я в значительной степени знаю, как создать любой тип файла, кроме Папка для хранения / собрать мои сформированные файлы.

Как использовать код для создания папки? желательно с использованием boost :: Serialize или STL?
Было бы замечательно, если бы он также не зависел от платформы!


Хорошо, теперь я посмотрел / попытался использовать boost :: filesystem. Однако, когда я смотрю на документацию по ссылкам, там мало информации о create_directory (); У меня остались вопросы вроде: что если каталог уже существует?

bool create_directory (const path & p); bool create_directory (const путь & p, system :: error_code & ec); Эффекты: Попытки создать каталог p преобразуется в, как если бы POSIX mkdir () со вторым аргументом из S_IRWXU | S_IRWXG | S_IRWXO.

Постусловие: is_directory (p)

Возвращает: true, если был создан новый каталог, иначе false.

Броски: как указано в сообщении об ошибке.

Я пытаюсь запустить следующий код и проверяю, была ли создана новая папка или то, что я теперь понимаю как каталог =). Я не могу найти один! Зачем? И это возвращает true = /

  path testPath("C:\\Users\\Howlett\\Documents\\Visual Studio 2010\\Projects\\boost tests\\newFolderTest");
  bool success = create_directory(testPath);
  bool success2= create_directory("C:\\Users\\Howlett\\Documents\\Visual Studio 2010\\Projects\\boost tests\\Test\\NestedFolderTest");

1 Ответ

1 голос
/ 24 июля 2011

Возможно, вам следует искать библиотеку файловой системы , которая могла бы повысить вашу производительность при выполнении этой задачи. Его можно даже назвать Boost.Filesystem ;)

Это довольно хорошая библиотека для обработки файловой системы. Ваша конкретная задача будет покрыта boost::filesystem::create_directory.


Следующий исходный код работает. Если он не создает каталог, вам следует обновить Windows Explorer, чтобы убедиться, что он действительно выглядит. Если вы запустите программу дважды, во второй раз появится сообщение об ошибке.

#define BOOST_FILESYSTEM_VERSION 3
#include <boost/filesystem.hpp>
#include <iostream>

namespace fs = boost::filesystem;

int main(int argc, const char *argv[])
{
    fs::path thePath = fs::current_path();
    std::cout << thePath << std::endl;

    fs::path newDir = thePath / "newDir";
    std::cout << newDir << std::endl;

    bool bDidCreate = fs::create_directory(newDir);

    if(!bDidCreate)
        std::cout << "Directory creation failed!" << std::endl;

    return 0;
}
...