The proper way to close a QFile?
-
QFile example_file('/usr/test/file.txt'); if(example_file.open(QFile::ReadOnly | QFile::Text) { QString line = example_file.readLine(); qDebug() << "line:" << line; } example_file.flush(); // redundant? example_file.close(); // is this needed if I flush or does flush take care of memory leaks already?
How do I close a file I open in with QFile? Does flush take care of memory leaks or is it useless to use flush when I will use 'close' directly after anyways?
-
Do you understand that flushing the file isn't relevant when reading? Flush doesn't have anything to do with memory leaks.
But to your direct question:
See the documentation for the destructor QFile::~QFile() It implicitly closes the file if it is open. Since your object is local (stack allocated) the destructor will automatically be executed when the object goes out of scope. -
@legitnameyo
Although what @Kent-Dorfman says about stack-allocated destructor auto-closing is quite correct, I would always put in an explicitclose()
as soon as I am finished with any file, personally. It's good practice, especially for potential future code changes. You never needflush()
on read, and you don't needflush()
on write if it's immediately followed byclose()
.