Работа с файлами С++

186
26 ноября 2016, 19:02

Потребовалось поработать с файлами в С++. К моему удивлению, это оказалось не просто, в отличие от С#.

Требуется определить по пути, файл это или каталог. На MSDN нашёл как это делается, только их namespace-ы:

using namespace System;
using namespace System::IO;
using namespace System::Collections;

у меня не канают: их просто не видно. Подскажите, что делать?

Обозначаю проблему: требуется кроссплатформенное решение для опроеделения - элемент является файлом или каталогом.

Answer 1

А так не годится?

#include <sys/stat.h>
bool isDir(const char * name)
{
    struct stat st;
    return (stat(name,&st) == 0) && (S_IFDIR & st.st_mode);
};
bool isFile(const char * name)
{
    struct stat st;
    return (stat(name,&st) == 0) && (S_IFREG & st.st_mode);
};

Не знаю компилятора, где этого нет :)

Answer 2
  1. Простой сишный (не плюсовый) путь: man stat (если в Windows с чем-то из этого проблемы - там есть другие). Можно попробовать просто открыть как каталог и проанализировать результат (ENOTDIR, см. man opendir, opendir в Windows).

  2. Из именно плюсовых (но зачем, если есть п.1?) приходит в голову разве что is_directory() (бустовая Filesystem Library).

READ ALSO
Добавление в архив. POCO Zip

Добавление в архив. POCO Zip

Для работы с Zip выбрал POCO-библиотекиПытаюсь добавить элементы в архив, добавляется только последний

189
Прием всех пакетов, приходящих на сокет машины

Прием всех пакетов, приходящих на сокет машины

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

207
Объявление констант через extern

Объявление констант через extern

Вылезает ошибка при объявлении константы:

220
Указатель на массив C++

Указатель на массив C++

Пусть имеем статический массив:

203