C++ - Test auf Datei oder Verzeichnis

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
me
Beiträge: 868
Registriert: 30.10.2005 00:14:23
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Paderborn
Kontaktdaten:

C++ - Test auf Datei oder Verzeichnis

Beitrag von me » 27.06.2007 10:47:08

Guten Morgen,

ich müsste in C++ einen kleinen Test schreiben, mit dem ich herausfinde ob der Pfad (zB /foo/blubb) nun ein Dir ist oder eine Datei. Wie würde das aussehen?
Anytime if we think we were right,
we were maybe wrong.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 27.06.2007 11:32:52

moin, moin,

schau dir mal "fstat" und Freunde an

Code: Alles auswählen

  int stat (const char *path, struct stat *buf);
  int fstat (int filedes, struct stat *buf);
  int lstat (const char *path, struct stat *buf);
in der struct gibt es ein Feld "st_mode" mit einem
Bit "S_IFDIR" und noch ein paar.
Beware of programmers who carry screwdrivers.

Benutzeravatar
me
Beiträge: 868
Registriert: 30.10.2005 00:14:23
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Paderborn
Kontaktdaten:

Beitrag von me » 27.06.2007 13:26:08

Ich habe das jetzt nicht wirklich verstanden. :?
Könntest du da eventuell ein kleines beispiel machen?
Anytime if we think we were right,
we were maybe wrong.

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von GoKi » 27.06.2007 15:47:21

z.B.

Code: Alles auswählen

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

bool fileExists(const char* filename)
{
  struct stat statInfo;
  return (stat(filename, &statInfo) == 0);
}

bool isRegularFile(const char* filename)
{
  struct stat statInfo;
  return (stat(filename, &statInfo) == 0 && S_ISREG(statInfo.st_mode));
}

bool isDirectory(const char* filename)
{
  struct stat statInfo;
  return (stat(filename, &statInfo) == 0 && S_ISDIR(statInfo.st_mode));
}
MfG GoKi
:wq

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 27.06.2007 19:07:52

Alternativ mit boost::filesystem

Antworten