QFile write не отвечает / вылетает приложение - PullRequest
0 голосов
/ 11 марта 2019

Я работаю над встроенным Linux и копирую файлы на USB-флешки.

мои файлы:

sourceFile->open(QIODevice::ReadOnly);
targetFile->open(QIODevice::ReadWrite);

переменные

nCopySize = sourceFile->size() / 100;
QByteArray buffer;

и чтениенапишите часть:

//copy files
for (int count = 0; !(buffer = sourceFile->read(nCopySize + 1)).isEmpty(); count+=(nCopySize + 1))
{
    try {
        int writeErr = targetFile->write(buffer);

        qDebug() << writeErr;
        if (writeErr == -1) { //e.g. when device is plugged off
            abortCopyFile = true;
        }
    } catch (const std::exception& ex) {
        qDebug() << "catched something:" << ex.what();
        //abort copying file... etc.
    } catch (...) {
        qDebug() << "catched something else";
        //abort copying file... etc.
    }

    //report progress ...

    //abort-option
    if (abortCopyFile == true)
        break;
}

Я не знаю, верна ли часть catch, но это не мой настоящий вопрос.Дело в том, что когда я отключаю флэш-накопитель USB во время копирования файла из системы на флэш-накопитель USB, строка

targetFile->write(buffer);

иногда отвечает -1, а иногда вообще не реагирует иприложение вроде зловеще падает.

Так что я думал, что try-catch поможет мне, но это не так.Ничего не ловит.Приложение просто падает.

Что я могу сделать с этой проблемой?Перезапуск приложения - это самое меньшее, что я хочу сделать.

...