Prüfen ob Verzeichnis existiert

Der Header "dirent.h" ist im VC leider nicht verfügbar.

Die Lösung des probeweisen Verzeichnisanlegens für eine reine Existenzüberprüfung finde ich nicht ganz so toll.
Daher hier noch ein Vorschlag:
C++:
#include <sys/stat.h>

bool Exists(const char* Path) // 'Path' ohne abschliessenden Backslash verwenden 
{
    struct stat my_stat;
    return (stat(Path, &my_stat) == 0);
}
Gruß
MCoder
 
Wieso ist dirent.h nicht verfügbar? Typisch MS (Borland C++ Builder ftw), naja, er hat ja nicht gesagt, dass er VC++ benutzt, sondern ehr das gegenteil, oder?
 
Zuletzt bearbeitet:
:-(UPS. Ich glaube es gibt in VC++ irgend welche funktionen, die das selbe machen nur anders heißen, du müsstest nur einen header und dann opendir und closedir oder so austauschen. Musst du mal googeln

Du könntest auch schauen, ob du einfach die dirent.h im VC++ integrieren kannst^^
 
Ok,

Code:
bool Exists(const char* Path) // 'Path' ohne abschliessenden Backslash verwenden 
{    
struct stat my_stat;    
return (stat(Path, &my_stat) == 0);
}

Funktioniert leider auch nicht. Ich habs jetzt einfach anders gelöst:

Hab Verzeichnis- und Dateifehler zusammengefasst

Die Datei, die von der Funktion geprüft werden soll, liegt ja auch im angegebenen Verzeichnis -> wenn Verzeichnis nicht existiert kann die Datei auch nicht geöffnet werden und es wird ein Fehler zurückgegeben.

Zwar kann ich jetzt nicht mehr sagen, ob der Fehler an Verzeichnis- oder an der Dateiangabe liegt, aber das Programm erfüllt trotzdem seinen Zweck.

Lg Chriss
 
Wenn du sagst, das du dies nur unter Windows als DLL Kompilierst könntest du auch die
WINAPI benutzen:
Code:
DirExists(std::string Dir) {
    HANDLE FindHandle;
    WIN32_FIND_DATAA W32FindData;
    size_t DirLen = Dir.length();

    if ( Dir.at( length - 1 ) != '\\' && Dir.at( length - 1 ) != '/' ) {
        Dir += "\\";
    }

    Dir += "*.*";
    FindHandle = FindFirstFile( Dir.c_str(), &W32FindData );

    if ( FindHandle == INVALID_HANDLE_VALUE) {
        int ErrNum = GetLastError();

        // The given path is invalid! || Directory name or volume label syntax is incorrect!
        if ( ErrNum == ERROR_PATH_NOT_FOUND || ErrNum ==  ERROR_LABEL_QUESTIONABLE ) {
            return false;
        } else {
            return true;
        }
    }

    FindClose( FindHandle )
    return true;
}


Best wishes
FBIagent
 
Zuletzt bearbeitet:
Zurück