在Qt中创build/写入一个新文件

我试图写入一个文件,如果该文件不存在创build它。 我在互联网上search,没有为我工作。

我的代码看起来像这样:

QString filename="Data.txt"; QFile file( filename ); if ( file.open(QIODevice::ReadWrite) ) { QTextStream stream( &file ); stream << "something" << endl; } 

如果我在目录中创build一个名为Data的文本文件,它将保持为空。 如果我不创build任何东西,它也不会创build文件。 我不知道该怎么做,这不是我尝试创build/写入文件的第一种方式,也没有任何方法可行。

感谢您的回答。

你确定你在正确的目录吗?
打开没有完整path的文件将在当前工作目录中打开它。 在大多数情况下,这不是你想要的。 尝试改变第一行

QString filename="c:\\Data.txt"
QString filename="c:/Data.txt"

并查看该文件是否在c:\创build

这很奇怪,一切都很好,你确定它不适合你吗? 因为这个main的确对我有用,所以我会在别的地方寻找问题的根源。

 #include <QFile> #include <QTextStream> int main() { QString filename = "Data.txt"; QFile file(filename); if (file.open(QIODevice::ReadWrite)) { QTextStream stream(&file); stream << "something" << endl; } } 

你提供的代码也几乎与QTextStream的详细描述中提供的代码相同,所以我很确定,问题在别处:)

另请注意,该文件不叫Data而是Data.txt ,应该在程序运行的目录(不一定是可执行程序所在的目录)中创build/定位。

 #include <QFile> #include <QCoreApplication> #include <QTextStream> int main(int argc, char *argv[]) { // Create a new file QFile file("out.txt"); file.open(QIODevice::WriteOnly | QIODevice::Text); QTextStream out(&file); out << "This file is generated by Qt\n"; // optional, as QFile destructor will already do it: file.close(); //this would normally start the event loop, but is not needed for this //minimal example: //return app.exec(); return 0; } 

你的代码非常好,你只是没有在正确的位置find你的文件。 由于您没有提供绝对path,因此您的文件将相对于当前工作文件夹(更确切地说是在当前工作文件夹中)创build。

你当前的工作文件夹是由Qt Creator设置的。 转到项目>>您select的版本>>按“运行”button(在“生成”旁边),您将看到该页面上的内容,这当然也可以更改。

在这里输入图像说明

 QFile file("test.txt"); /* * If file not exit it will create * */ if (!file.open(QIODevice::ReadOnly | QIODevice::Text | QIODevice::ReadWrite)) { qDebug() << "FAIL TO CREATE FILE / FILE NOT EXIT***"; } /*for Reading line by line from text file*/ while (!file.atEnd()) { QByteArray line = file.readLine(); qDebug() << "read output - " << line; } /*for writing line by line to text file */ if (file.open(QIODevice::ReadWrite)) { QTextStream stream(&file); stream << "1_XYZ"<<endl; stream << "2_XYZ"<<endl; }