Herausfinden ob ein Verzeichnis auf der Festplatte existiert



  • Was mache ich wenn das Verzeichnis C:\ ist?

    EDIT: Bzw. 😨 oder E: ... (C: ist ein schlechtes Beispiel, da es das immer gibt)



  • C:\\Test2\*

    D:\*



  • Das oberere schlägt bei mir nie fehl ...
    Das untere kann ich mal testen, obwohl das auch Mist ist. Ich muss jetzt schon den string umwandeln...



  • hätte da vielleicht noch was diese funktion gibt ist immer FALSE(0) wenn das verzeichnis nicht existiert oder wenn das angegebene Verzeichnis eine Datei ist

    (übrigens funktion ist auf jedenfall in Windows funktionsfähig ob das unter linux läuft da unterscheiden sich die angaben aber da ich bei ner c++ referenz
    ne angabe fand das ein bestimmter parameter nur unter linux existiert sollte es wohl unter beiden betriebsystemen laufen

    aufruf sieht für deinen Fall folgendermßen aus
    dabei ist complpfadfile der string mit nem dem Verzeichnis

    if (isDirectory(complpfadfile_.c_str())==TRUE) 
    {
    }
    
    int isDirectory(const char *filename)
    {
      	char tempstring[255]; 
        strncpy(tempstring, filename, 255);
        if (tempstring[strlen(tempstring) - 1] == '/') {
             tempstring[strlen(tempstring)-1] =0; 
           }
    
    	struct stat st;
    
    	if(stat(tempstring, &st)) return FALSE;  // Existiert nicht
    	if(!S_ISDIR(st.st_mode)) return FALSE; // es ist kein direktory
    
    	return TRUE;
    }
    

    wenn du willst kannst ja bei fehlschlagen (FALSE) ja auch noch nachprüfen ob es sich bei der angabe um eine Datei handelt

    und dann ne fehlermeldung ausgegeben

    int does_file_exist(const char *filename)
    {
    	struct stat st;
    	if(stat(filename, &st) || isDirectory(filename)) return FALSE;
    	return TRUE;
    }
    


  • flammenvogel schrieb:

    Das oberere schlägt bei mir nie fehl ...

    Welches Betriebssystem benutzen Sie denn? Ich nutze Windows XP und es schlägt fehl wenn der Ordner nicht existiert.



  • Auch Windows Xp, bei Laufwerken gehts mit dem wildcard (es schlägt also fehl wenn es das Laufwek nicht gibt), aber bei Verzeichnisen gehts nicht. (Code siehe Seite 1). Ich wandel jetzt die strings immer so um wie ich sie brauche, bei Laufwerksnamen kommt ein * hinten dran. Bei Verzeichnisen wird das letzt \ entfernt.



  • Der Code von Seite 1 ist ja auch falsch. Hast ja nur \* statt \*



  • Hab den alten Funktionsaufruf kopiert, ich glaube das Beispiel lässt sich nicht mal kompelieren (Seite 1). Es funktioniert aber auch mit dem Zeichen nicht.



  • flammenvogel schrieb:

    Wie soll das bei FindFirstFile gehen, wenn ich das mit dem Verzeichnis mache, schlägt die ja auch fehl wenn es keine Datei im Zielverzeichnis gibt...

    Es gibt aber selbst in einem leeren Verzeichniss i.d.R. zwei Dateien "." und "..". Diese werden mir bei Verwendung von FindFirstFile regelmässig aufgelistet. Somit sollte FindFirstFile schon funktionieren zur Verzeichnissprüfung.

    Gruss
    Holgie



  • Holgie: Ich benutz es ja jetzt auch zur Verzeichnisprüfung ...


Anmelden zum Antworten