Search code examples
c++qtqfile

QFile. Device not open


I have problem with QFile.

QFile file1("file1.dat");
QFile file2("file2.dat");

if(file2.exists())
{

}

if(!file1.open(QIODevice::ReadOnly))
{
    qDebug() << "Ошибка открытия для чтения";
}

if(!file2.open(QIODevice::WriteOnly))
{
    qDebug() << "Ошибка открытия для записи";
}

QByteArray block = file1.readAll();
file2.write(block);
file1.close();
file2.close();

ERROR:

QIODevice::read (QFile, "file1.dat"): device not open

Solution

  • try to open file1.dat in read-write mode:

    if(!file1.open(QIODevice::ReadWrite))
    {
        qDebug() << "Ошибка открытия";
    }
    

    Because if you open it just for reading, it cannot be created if it doesnt exist, or create it manually at first.

    and in case that file is not opened you are not doing anything, so just for being sure check if both files were opened at first:

    if(file1.isOpen() && file2.isOpen()){
        QByteArray block = file1.readAll();
        file2.write(block);
        file1.close();
        file2.close();
    }