Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Существует ли файл?


Автор: Kirgston 1.4.2009, 20:46
Всем доброго времени суток! Да вопрос совсем детский... =) но увы просто забыл как это решается =) как сделать проверку существует ли файл, и если его нету то создать его?

Автор: zim22 1.4.2009, 20:52
fopen возвратит ошибку, если файл не удалось открыть / не существует
также поступит и конструктор ifstream

создать файл можно функциями fopen и ofstream

Автор: bsa 1.4.2009, 20:55
Kirgston, читай про указанные zim22 функцию и поток. Еще есть функция open. У всех у них есть флаги, которые регулируют поведение при отсутствии файла.

Автор: EvilsInterrupt 1.4.2009, 22:07
Kirgston, для виндовоз )))

Код

bool
FileExist(char * FileName)
{
  char  path[_MAX_PATH];

  _fullpath(path,FileName,_MAX_PATH);
  GetFileAttributesA(path);
  return( GetLastError() != ERROR_FILE_NOT_FOUND );
}

Автор: jonie 1.4.2009, 22:56
есть не стандартная функция stat, которая, однако поддерживается многими компиляторами.
Код

struct stat fstat;
bool isExist = (stat(szFilname,&fstat) != 0)


для ifstream не забудьте ios::nocreate флаг поставить...

Автор: InvalidProperty 2.4.2009, 14:23
а если под никсами, то можно и так:
Код

inline bool file_exists(const char* filename)
 { return access(filename, F_OK) == 0 ? true : false; }

Автор: zim22 2.4.2009, 15:06
Цитата(InvalidProperty @  2.4.2009,  14:23 Найти цитируемый пост)
а если под никсами, то можно и так:

а так нельзя? smile
Код
inline bool file_exists(const char* filename)
 { return !access(filename, F_OK); }


Автор: InvalidProperty 2.4.2009, 16:58
Цитата(zim22 @ 2.4.2009,  15:06)
Цитата(InvalidProperty @  2.4.2009,  14:23 Найти цитируемый пост)
а если под никсами, то можно и так:

а так нельзя? smile
Код
inline bool file_exists(const char* filename)
 { return !access(filename, F_OK); }


ой, ахтунг!  smile Прошу прощения, лажанулся. Конечно можно  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)