funktion zum überprüfen des vorhandenseins einer datei?



  • streamer schrieb:

    int main()
    {
       ifstream in("dat.txt");
       if(!in) cout << "Datei existiert nicht";
       in.close();
       return 0;
    }
    

    goto Master_Max' Posting



  • interpreter schrieb:

    streamer schrieb:

    int main()
    {
       ifstream in("dat.txt");
       if(!in) cout << "Datei existiert nicht";
       in.close();
       return 0;
    }
    

    goto Master_Max' Posting

    Tja aber boost ist immer noch kein Standard ... 🙄



  • aber deine Lösung macht das trotzdem nicht richtig :p 🙄



  • Aber funktioniert ... :p 🙄



  • Meckert keiner ??? 😮

    Klar kann man so nicht überprüfen ob man überhaupt Zugriffsrechte auf die Datei besitzt.
    Aber das ist mit Standard halt nicht möglich.



  • bool exist(string dateiname)
    {
        ifstream test(dateiname.c_str());
        if(!test)
    
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    
    int main()
    {
        string name;
        cin>>name;
    
        if(exist(name) == true)
        {
            cout<<"Datei ist vorhanden"<<endl;
        }
        else
        {
            cout<<"Datei ist nicht vorhanden"<<endl;
        }
    }
    


  • hm......
    ich denke, ich werde die boost variante verwenden, um mich näher damit vertraut zu machen. 😉

    mfg

    Olf



  • Aber funktioniert ...

    im Normalfall ja, aber es kann auch Probleme geben

    #include <fstream>
    #include <iostream>
    
    int main(int argc,char **argv) {
      if(argc!=2) {
        std::cerr << "usage: " << *argv << " <file>\n";
        return 1;
      }
    
      std::ifstream test(argv[1]);
      if(!test)
        std::cout << argv[1] << " existiert nicht!" << std::endl;
      else
        std::cout << argv[1] << " existiert!" << std::endl;
    }
    
    > g++ -Wall -W -std=c++98 fexists.cpp
    > touch file              #erzeuge datei "file"
    > ln -s file link         #erzeuge einen symbolischen Link "link" auf "file"
    > ./a.out file
    file existiert!
    > ./a.out link
    link existiert!
    > rm file                 #lösche file (aber nicht den Link)
    > ./a.out link
    link existiert nicht!
    > ls link                 #gucke ob link noch existiert
    link
    

    @dateimann

    if(!test)
    
        {
            return false;
        }
        else
        {
            return true;
        }
    

    🤡



  • kingruedi schrieb:

    im Normalfall ja, aber es kann auch Probleme geben

    Wobei das eigentlich keine Probleme sind, sondern eben genau dass, was man fast immer will. Nur die Aussage "Datei existiert (nicht)" ist einfach falsch.

    Wirklich feststellen, ob eine Datei existiert, ist bei fehlenden Rechten ohnehin nicht möglich.

    Also sollte man sich überlegen, ob man mit boost, fstat oder sonstigem, überprüft ob eine Datei vorhanden ist, oder ob man nicht lieber prüft ob man die Datei zum lesen/schreiben öffnen kann.



  • nein, es geht eindeutig darum, ob die datei vorhanden ist 😉

    mfg Olf


Anmelden zum Antworten