prüfen, ob es Datei bereits gibt



  • Hallo

    Ich wollte mal fragen, ob es eine Funktion gibt. mit der man testen kann, ob eine Datei bereits im Verzeichnis vorhanden ist.

    std::ofstream m_FileToWriteIn;
    if(!m_FileToWriteIn.IsThere()/*????*/)
    m_FileToWriteIn.open(p_strFileName.c_str(),std::ios::out | std::ios::binary);
    

    Ich hoffe, dass ich mich verständlich artikuliert habe.

    chrische



  • Mit Standard-C++ kannst du das nur bedingt prüfen:

    ifstream test(Dateiname.c_str());
    if(!test)
      cout<<Dateiname<<" konnte nicht geöffnet werden."<<endl;
    

    Aber das "konnte nicht geöffnet werden" kann auch andere Gründe haben als "Datei nicht vorhanden" (z.B. fehlende REchte oder Sperrung durch ein anderes Programm).

    Ansonsten gibt es sicher auch OS-spezifische Funktionen, die zuverlässiger sind (z.B. FindFirstFile()).



  • fstream repräsentiert einen file stream und kein file.



  • Damit es auch endlich der letzte kapiert: boost::filesystem benutzen!



  • Artchi schrieb:

    Damit es auch endlich der letzte kapiert: boost::filesystem benutzen!

    Damit es Artchi auch kapiert: boost::filesystem gehört nicht zum C++ Standard.



  • der erste schrieb:

    Artchi schrieb:

    Damit es auch endlich der letzte kapiert: boost::filesystem benutzen!

    Damit es Artchi auch kapiert: boost::filesystem gehört nicht zum C++ Standard.

    und? war das hier verlangt? nein!



  • Hallo

    Was ist kann man den mit boost:filesystem alles machen. Gibt es dazu ein Tutorial?

    chrische



  • @otze: Doch, implizit durch das gewählte Forum 🙂

    Und jetzt nochmal freundlich für den Fragesteller: Boost ist ein C++-Framework, dass sehr viele oft benötigte Komponenten sehr performant implementiert. Erhältlich ist es auf http://www.boost.org, dort findest du auch en masse Doku. Eine gute Installationsanleitung findest du unter: http://www.kharchi.de/Boost_Installation.html

    Für die von dir gewählte Aufgabe ist es sehr empfehlenswert, willst du dir den Aufwand allerdings nicht antun gibt es auch OS-abhängige Alternativen.

    MfG SideWinder



  • mit ein bisschen mehr freundlichkeit und feingefühl sieht man hier übrigens bei boost schon drüber hinweg (inoffiziellerweise), denk ich mal 😉



  • Hallo

    Erstmal danke für den Installationslink. Ich habe alles nach den Anweisungen gemacht, aber es wurde bei mir leider kein Verzeichnis mit den include-Dateien angelegt. Ich werde es einfach morgen noch einmal probieren und mich dann wieder melden.

    chrische



  • Hallo

    Auch beim zweiten Versuch wurde bei mir kein include-Verzeichnis angelegt. Weiß irgendwer eine Lösung für dieses Problem?

    chrische



  • #include <io.h>
    _access( "c:\\Myfile.txt", 0 )
    

    😕



  • davie schrieb:

    mit ein bisschen mehr freundlichkeit und feingefühl sieht man hier übrigens bei boost schon drüber hinweg (inoffiziellerweise), denk ich mal 😉

    Naja mitlerweile sollte man bei boost schon fast an eine Standarderweiterung denken.
    Wenn man mal bedenkt das bereits 10 Libs der boost libraries in den neuen Standard aufgenommen werden ( siehe TR1 ) dann kann man wohl boost schon hier aufnehmen ^^


Anmelden zum Antworten