[QT] как организовать докачку файлов?

Картежник
Дата: 17.12.2014 09:14:09
организовал скачку файлов.
вот код который производит запись в файл.
 QFile *file = new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite))
        {
            file->write(reply->readAll());
            file->flush();
            file->close();
        }
        delete file;
Картежник
Дата: 17.12.2014 10:35:46
Хорошо как сделать чтоб вот тут
QFile *file = new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite))
        {
            file->write(reply->readAll());
            file->flush();
            file->close();
        }
        delete file;


программа получала данные по байтам а не все сразу?
сделал так но это неправильно
 qint64 fs=file->size();
            qint64 rs=reply->size();
            qint64 i=fs;
            while (i<=rs){
                char data[1];

                reply->read(data,1);    
                file->write(data);
                file->flush();
                i=i+1;
            }
            file->close();
mayton
Дата: 17.12.2014 12:43:11
Картежник, можно читать блоками через ::read(char * data, qint64 maxSize)
а обработку делать по байтам.

Или тебе другое надо?
Картежник
Дата: 17.12.2014 19:05:51
mayton,
мне именно это и надо.а в этом коде видимо что то не так сделал? если прочитал правильно,значит записал неправильно
Dimitry Sibiryakov
Дата: 17.12.2014 19:12:31

Картежник
в этом коде видимо что то не так сделал?

Да в общем-то практически всё не так. Позиционирования на конец файла - нет. Запроса
только недостающей части - нет. Конечный размер определяется неправильно. А за запись по
одному байту вообще надо руки отрывать до самой задницы.

Posted via ActualForum NNTP Server 1.5

NekZ
Дата: 17.12.2014 19:19:11
А зачем QFile через new создаётся, а чуть ниже удаляется? Это ж потенциально может привести к утечке памяти, если между созданием и удалением возникнет исключение. Пользуйтесь хотя бы умными указателями.
Картежник
Дата: 17.12.2014 19:28:12
Dimitry Sibiryakov,

по 1 байту - это для проверки. на конец файла будет следующий этап. я же сверху писал что хочу организовать запись побайтно.а там был пример который считывает полностью и записывает полностью.после того как удастся сделать это буду уже к следующему этапу, там будет проверка целостности файла и т.д.
Картежник
Дата: 17.12.2014 19:33:30
NekZ
А зачем QFile через new создаётся, а чуть ниже удаляется? Это ж потенциально может привести к утечке памяти, если между созданием и удалением возникнет исключение. Пользуйтесь хотя бы умными указателями.

вопрос был о том сделать считывание и запись по байтам, а не про утечку памяти)))
mayton
Дата: 17.12.2014 19:57:18
Картежник, вычитывание файла по байтам это "фасад". Реально файло читается блоками.
Картежник
Дата: 17.12.2014 20:11:07
mayton,

ок спс понятно. ну поменять цифру 1 будет не сложно думаю. вообщем поменял на 8. пытаюсь считать простой текстовой файл. и все равно не то. структура файла вроде правильная.а вот символы не те