Создание/запись в новый файл в Qt
Я пытаюсь записать в файл, и если файл не существует, создайте его. Я искал в Интернете, и ничего не работало для меня.
Мой код выглядит так:
QString filename="Data.txt";
QFile file( filename );
if ( file.open(QIODevice::ReadWrite) )
{
QTextStream stream( &file );
stream << "something" << endl;
}
Если я создам текстовый файл Data в каталоге, он остается пустым. Если я ничего не создаю, он тоже не создаст файл.
Я не знаю, что с этим делать, это не первый способ, которым я пытался создать/записать в файл, и ни один из способов не работал.
Спасибо за ваши ответы.
Ответы
Ответ 1
Вы уверены, что находитесь в правильном каталоге?
Открытие файла без полного пути откроет его в текущем рабочем каталоге. В большинстве случаев это не то, что вы хотите. Попробуйте изменить первую строку на
QString filename="c:\\Data.txt"
или
QString filename="c:/Data.txt"
и посмотрите, создан ли файл в c:\
Ответ 2
Это странно, все выглядит прекрасно, вы уверены, что это не сработает для вас? Потому что этот 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
и должен быть создан/расположен в каталоге, из которого была запущена программа (не обязательно той, где находится исполняемый файл).
Ответ 3
#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;
}
Ответ 4
Ваш код в порядке, вы просто не смотрите в нужное место, чтобы найти файл. Поскольку вы не указали абсолютный путь, ваш файл будет создан относительно текущей рабочей папки (точнее, в текущей рабочей папке в вашем случае).
Текущая рабочая папка задана Qt Creator. Перейдите в Проекты → Выбранная сборка → Нажмите кнопку "Запустить" (рядом с "Построить" ), и вы увидите, что именно на этой странице, и вы тоже можете изменить.
![введите описание изображения здесь]()
Ответ 5
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;
}