Russian Qt Forum
Апрель 20, 2024, 17:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFile и readyRead()  (Прочитано 1755 раз)
Zusykss
Гость
« : Август 09, 2017, 20:45 »

Я в классе использую класс QFile.
алгоритм следующий:

Код:
// .... Крутится в цикле
file.setFileName(name.toStdString().c_str());
        if(!file.open(QIODevice::WriteOnly  | QIODevice::Append))
        {
            qDebug() << "Error open file, write";
        }

// Дальше делается запрос ....QNetworkAccessManager
    m_reply = ptr_manager->get(m_req);
    QObject::connect(m_reply, &QNetworkReply::readyRead, this, &LoaderVideo::ReplyFinished);
    QObject::connect(ptr_manager.get(), &QNetworkAccessManager::finished, this, &LoaderVideo::Finished);

void LoaderVideo::ReplyFinished()
{
    QByteArray m_Buffer = m_reply->readAll();
// Этот кусок кода написал, потому что из 200 файлов записывался только один, а для всех остальных пишет QFileDevice::seek: IODevice is not open

    if(!file.isOpen())
    {
        if(!file.open(QIODevice::WriteOnly  | QIODevice::Append))
        {
            qDebug() << "Error open file, write";
        }
        if(m_Load[m_index].m_absolutPath.isEmpty())
           m_Load[m_index].m_absolutPath = file.symLinkTarget();
    }


    try
    {
        if(m_reply->error() == QNetworkReply::NoError)
        {
//            QDataStream fout(file);
//            fout << m_reply->readAll();
            file.write(m_Buffer);
        }
        else
        {
            const std::string str = m_reply->errorString().toStdString();
            throw std::runtime_error(str.c_str());
        }
    }
    catch(const std::exception & excep)
    {
        qDebug() << excep.what();
    }


Подскажите как правильно организовать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 20.