我正在尝试从 .txt 文件中读取一行,然后将该行写回另一个 .txt。但是,我只能以只读模式打开文件。当我尝试写回第二个资源 .txt 时,它不会打开。
在我的项目中,我添加了一个资源文件并将两个文件“Test.txt”和“Ergebnis.txt”添加到资源文件中,现在看起来像这样:
<RCC>
<qresource prefix="/stuff">
<file>Test.txt</file>
<file>Ergebnis.txt</file>
</qresource>
<qresource prefix="/things"/>
实际的读/写是在单独的函数中完成的,它们的调用方式如下:
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
QString mLine1 = "Success";
mLine = Read(":/stuff/Test.txt");
Write(":/stuff/Ergebnis.txt", mLine1);
}
看起来像这样:
QString Dialog::Read(QString filename){
QFile mNewFile(filename);
QString* mText = new QString;
bool check = true;
if(!mNewFile.open(QFile::ReadOnly | QFile::Text)){
return *mText = "";
}
QTextStream in(&mNewFile);
check = in.readLineInto(mText);
mNewFile.close();
return *mText;
}
void Dialog::Write(QString out, QString Text){
QFile mNewFile(out);
QString errMsg;
QFileDevice::FileError err = QFileDevice::NoError;
if(mNewFile.exists())
qDebug() << "Ergebnis.txt exists!";
if(!mNewFile.open(QFile::WriteOnly | QFile::Text )){
errMsg = mNewFile.errorString();
err = mNewFile.error();
qDebug() << "Error: " << errMsg <<"Number: " << err;
return;
}
QTextStream out_str(&mNewFile);
out_str << Text;
mNewFile.flush();
mNewFile.close();
}
阅读工作得很好,所以我相信资源的路径是正确的。在 Write() 函数中,我还检查了文件是否存在,它确实存在。我尝试在 ReadOnly 中打开文件,它也可以。问题似乎是我无法以 WriteOnly 或 ReadWrite 模式打开文件。errMsg 将“未知错误”输出到命令行。错误代码是“5”,不管这意味着什么......
我还尝试使用以下方法直接从我的文件系统打开文件:
Write("/home/js/Dokumente/Cpp/Programme/QT/TestStringSource/Ergebnis.txt", mLine1);
效果很好,很有趣。
任何意见是极大的赞赏!