Search code examples
qtqfile

QFile: new file name append to tho last saved


I'm looking for the error I made on this code, but I can not find any solution since hours..

This function should simpli save a file to a directory:

void MyClass::saveSettingsToFile(QString file_name)
{
   QString path;
   path = dir.append(file_name);
   QFile my_file(path);
   if (!my_file.open(QFile::WriteOnly))
   {
      qDebug() << "Could not open file for writing";
   }
   QTextStream out(& my_file);
   out << "some text \n"
   my_file.flush();
   my_file.close();
   path = "";
   file_name ="";
}

Where dir is a QString containing the directory, file_name is gathered from a lineEdit field. When I first call the function with, for example file_name = "aaaa.txt", I find this aaaa.txt in the specified directory. All right.

When then I call again the function with file_name = "bbbb.txt", I find in the specified directory this file: aaaa.txtbbbb.txt, instead of I bbbb.txt

It seems to me a very s****d error, but I cannot find what!

EDITED: there was this mistake QTextStream out(& path); instead of QTextStream out(& my_file);


Solution

  • You are modifying dir variable with QString::append. Variable dir is obviously a class member of MyClass. Try this instead:

    void MyClass::saveSettingsToFile(QString file_name)
    {
       QString path(dir);
       path.append(file_name);
       QFile my_file(path);
       //...
    }