QFile:新文件名附加到上次保存的

QFile: new file name append to tho last saved

我正在寻找我在这段代码中犯的错误,但几个小时后我找不到任何解决方案..

这个函数应该简单地将一个文件保存到一个目录:

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 ="";
}

其中 dir 是包含目录的 QString,file_name 从 lineEdit 字段收集。 当我第一次调用函数时,例如 file_name = "aaaa.txt",我在指定的目录中找到这个 aaaa.txt。好的。

当我再次调用 file_name = "bbbb.txt" 的函数时,我在指定的目录中找到了这个文件:aaaa.txtbbbb.txt,而不是I bbbb.txt

在我看来这是一个非常糟糕的错误,但我找不到什么!

已编辑:有这个错误 QTextStream out(& path); 而不是 QTextStream out(& my_file);

QString::append 函数修改参数值本身,如您在文档中所见:http://doc.qt.io/qt-5/qstring.html#append

Example:

QString x = "free";
QString y = "dom";

x.append(y);
// x == "freedom"

所以,发生的事情是它不断将内容附加到 dir 变量,而不仅仅是将结果分配给路径。

您正在使用 QString::append 修改 dir 变量。变量 dir 显然是 MyClass 的 class 成员。试试这个:

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