fstream: wann open/close?



  • Hallo!

    Sollte man bei Zugriffen auf eine Datei via fstream, diese Datei nur kurzfristig wenn eine Dateioperation ansteht öffnen und schließen oder einmalig öffnen und nach Programmende wieder schließen (wenn die Datei nur von diesem Programm genutzt wird).

    class File{
    
    public:
        File(const std::string& fileName)
            : m_file(fileName.c_str(), std::ios_base::out | std::ios_base::app)
        {
            if( !m_file.is_open() ) throw FileError();
        }
    
        void Write(const std::string& msg){ m_file << msg << std::endl; };
    
    private:
        fstream m_file;
    };
    
    class File{
    
    public:
        File(const std::string& fileName)
            : m_fileName(fileName)
        {
        }
    
        void Write(const std::string& msg){
    
            std::fstream file(m_fileName.c_str(), std::ios_base::out | std::ios_base::app);
            if( !m_file.is_open() ) throw FileError();
    
            file << msg << std::endl; };
            // file.close automatisch durch fstream-dtor
        }
    
    private:
        std::stream m_fileName;
    };
    

  • Mod

    Auf gar keinen Fall zwischen den Zugriffen öffnen und schließen! Das ist dann fürchterlich langsam.



  • Habe ich Nachteile, wenn ich die Datei während der Programmausführung durchgehend geöffnet halte?


  • Administrator

    Roger Wilco schrieb:

    Habe ich Nachteile, wenn ich die Datei während der Programmausführung durchgehend geöffnet halte?

    Du brauchst wahrscheinlich ein paar zusätzliche Systemressourcen. Aber in praktischer Hinsicht, sofern niemand anderes das File öffnen muss, nicht wirklich. Auf die Ausführungsgeschwindigkeit hat es ziemlich sicher keinen Einfluss.

    Grüssli



  • Dravere schrieb:

    Danke für die Hilfe, Antwort oder Meinung!

    DITO 😉


Anmelden zum Antworten