Подтвердить что ты не робот

Создание/запись в новый файл в Qt

Я пытаюсь записать в файл, и если файл не существует, создайте его. Я искал в Интернете, и ничего не работало для меня.

Мой код выглядит так:

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

Если я создам текстовый файл Data в каталоге, он остается пустым. Если я ничего не создаю, он тоже не создаст файл. Я не знаю, что с этим делать, это не первый способ, которым я пытался создать/записать в файл, и ни один из способов не работал.

Спасибо за ваши ответы.

4b9b3361

Ответ 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;
}