Feststellen ob angegebene Datei existiert



  • Hallo erstmal,

    Also ich hab vor ca einem Monat begonnen mich mit c++ zu beschäftigen. Aus keinem besonderen Grund... finde sowas total interessant.
    Komm eigentlich ganz gut zurecht. Hab auch versucht so wenig wie möglich zu fragen und selbest die Lösungen meiner Probleme zu finden, aber jetzt find ich einfach nichts mehr...
    Ich hoffe und denke, dass ihr mir helfen könnt.

    Ich möchte in eine txt-Datei Daten eintragen, die ich auch wieder auslesen möchte.
    Die Daten werden immer am Ende des Programms eingetragen und am Anfang ausgelesen. Das Problem: wenn ich das Programm zum erstenmal starte exestiert die Datei ja noch nicht...
    Gibts da einen Befehl, der prüft, ob in dem Verzeichnis die Datei existiert und mir als antwort true oder false zurückgibt?

    Bitte haltet euch zurück mit Fachbegriffen... Bin doch noch Anfänger^^

    Vielen Dank
    MfG Knickedi



  • ahoi,

    ich geht mal stark davon aus, dass du die datei mit "fopen" öffnen willst, dazu kannst du folgenden cod benutzen

    #include <stdio.h>
    
    int main(void)
    {
      FILE *pFile;
    
        pFile = fopen("datei.txt", "rw");
    
          if (!pFile)
          {
            // datei ist nicht vorhanden
          }
          else
          {
            // datei ist vorhanden
          }
    
      return 0;
    }
    

    mfg blan



  • das war erstmal c code.

    den entsprechenden c++ code findest du hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html

    und schau dir folgende zugriffsmodifier an

    ios::in Lesen
    ios::out Schreiben
    ios::app Schreiben nur am Dateiende
    ios::ate Dateizeiger beim öffnen auf Dateiende
    ios::trunc Bestehende Datei, den alten Inhalt löschen
    ios::binary Binärmodus

    und nicht immer vorhanden
    ios::nocreate Datei muss schon existieren
    ios::noreplace Datei darf nicht existieren



  • Hallo

    Ich kann dir empfehlen Boost zu verwenden. Da gibt es unter anderem dir Funktion "exists" der man den Namen einer Datei übergibt und man bekommt ein true oder false zurück.

    chrische



  • Erstmal vielen Dank für die Antworten... mit der C++-Methode scheint es um einiges kompizierter zu sein, aber ich werds mir auf jedenfall durchlesen.

    Soweit funktioniert es. Jetzt hab ich noch eine Frage:
    (Ich benutz fopen(); ) fclose(); geht dann nur, wenn eine Datei geöffnet wurde, also exestiert, oder?

    #include <stdio.h>
    
    int main(void)
    {
      FILE *pFile;
    
        pFile = fopen("datei.txt", "rw");
    
          if (!pFile)
          {
            // datei ist nicht vorhanden
          }
          else
          {
            // datei ist vorhanden
            fclose(pFile);
          }
    
      return 0;
    }
    

    MfG Knickedi



  • Das gehört eigentlich in das C-Forum!



  • Wie wärs mit den C++ Funktionen fürs Datei öffnen:
    http://www.cppreference.com/cppio/

    Also ich glaube es ist egal ob es die Datei gibt, probiers einfach mal. Wahrscheinlich ist die Überprüfung file == null wieso in der close() funktion drinn.

    mfg.



  • Mit dem msc gibts ne sehr komfortable Möglichkeit:

    ifstream in( "bla.txt", ios::_Nocreate );
    if( !in )
     //Datei existiert nicht
    


  • ERSTMAL: BITTE IN C VERSCHIEBEN... ist eher c.
    Ich programmier misch masch.

    Zwischenfrage: Ist das schlimm?
    darf man cout<<"\n"; kombinieren

    Jetzt hab ich noch eine Frage:
    Ich möchte in eine Datei schreiben. ("c:\\ordner\\datei.txt"), aber der Ordner existiert noch nicht, deshlab krieg ich einen Fehler.
    Wie kann ich den Ordner erstellen lassen? Hab im Internet gesucht und nix gefunden, außer mkdir, aber das will irgendwie nicht klappen...

    (Ich sollte mir mal ein C++ Buch kaufen^^)

    Vielen Dank
    MfG Knickedi



  • Hallo

    Ich galube die Funktion heißt _mkdir und du musst <direct.h> einbinden. Geht aber auch mit boost und zwar mit createdirectory.

    chrische



  • ordner wirst du schwer in einem standard buch finden, denn sie gehören nicht zum standard, sondern zum betriebssystem.
    für windows mal im winapi forum nachschauen, oder für c noch hier
    http://www.pronix.de/pronix-812.html
    oder für c++ hatte hume sikkins auf seiner homepage eine klasse.



  • vielen dank
    klappt wunderbar [ mkdir("c:\\ordner\\ordner") in dir.h ]

    jetzt würde mich nur noch eins interessieren:

    wenn ich den befehl immer ausführen lasse wenn das programm startet und dieser ordner existiert und bereits dateien enthält, bleiben die dateien dann unversehrt

    ich denke ja, aber auf nem falschen gedanken will ich nicht aufbauen



  • Knickedi schrieb:

    vielen dank
    klappt wunderbar [ mkdir("c:\\ordner\\ordner") in dir.h ]

    jetzt würde mich nur noch eins interessieren:

    wenn ich den befehl immer ausführen lasse wenn das programm startet und dieser ordner existiert und bereits dateien enthält, bleiben die dateien dann unversehrt

    ich denke ja, aber auf nem falschen gedanken will ich nicht aufbauen

    probiers aus.

    mfg.


Anmelden zum Antworten