HomeBlogMagic

Linux - C/C++ isFile/isDir Methode

Zum evaluieren ob ein gegebener Pfad eine Datei oder ein Ordner ist können folgende Methoden benutzt werden:

Für die Prüfung auf eine Datei:

#include <sys/types.h>
#include <sys/stat.h>
bool IsFile(const char* pcPath)
{
  bool bRet = false;
  struct stat oStat;
  if( 0 == stat(pcPath, &oStat))
  {
    if(S_ISREG(oStat.st_mode))
      bRet = true;
  }
  return bRet;
}

Sollte S_ISREG nicht existieren kann das wie folgt behoben werden:

#if !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)
  #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif

Für die Prüfung auf einen Ordner:

#include <sys/types.h>
#include <sys/stat.h>
bool IsDir(const char* pcPath)
{
  bool bRet = false;
  struct stat oStat;
  if( 0 == stat(pcPath, &oStat))
  {
    if(S_ISDIR(oStat.st_mode))
      bRet = true;
  }
  return bRet;
}
Permalink: https://adirmeier.de/Blog/ID_103
Tags: Blog, C/C++, isFilevon am 2017-05-08