powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT] как организовать докачку файлов?
25 сообщений из 48, страница 1 из 2
[QT] как организовать докачку файлов?
    #38835685
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
организовал скачку файлов.
вот код который производит запись в файл.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 QFile *file = new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite))
        {
            file->write(reply->readAll());
            file->flush();
            file->close();
        }
        delete file;
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38835751
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо как сделать чтоб вот тут
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
QFile *file = new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite))
        {
            file->write(reply->readAll());
            file->flush();
            file->close();
        }
        delete file;



программа получала данные по байтам а не все сразу?
сделал так но это неправильно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 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();
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38835916
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник, можно читать блоками через ::read(char * data, qint64 maxSize)
а обработку делать по байтам.

Или тебе другое надо?
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836348
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
мне именно это и надо.а в этом коде видимо что то не так сделал? если прочитал правильно,значит записал неправильно
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836355
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникв этом коде видимо что то не так сделал?
Да в общем-то практически всё не так. Позиционирования на конец файла - нет. Запроса
только недостающей части - нет. Конечный размер определяется неправильно. А за запись по
одному байту вообще надо руки отрывать до самой задницы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836361
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем QFile через new создаётся, а чуть ниже удаляется? Это ж потенциально может привести к утечке памяти, если между созданием и удалением возникнет исключение. Пользуйтесь хотя бы умными указателями.
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836368
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

по 1 байту - это для проверки. на конец файла будет следующий этап. я же сверху писал что хочу организовать запись побайтно.а там был пример который считывает полностью и записывает полностью.после того как удастся сделать это буду уже к следующему этапу, там будет проверка целостности файла и т.д.
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836375
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZА зачем QFile через new создаётся, а чуть ниже удаляется? Это ж потенциально может привести к утечке памяти, если между созданием и удалением возникнет исключение. Пользуйтесь хотя бы умными указателями.
вопрос был о том сделать считывание и запись по байтам, а не про утечку памяти)))
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836395
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник, вычитывание файла по байтам это "фасад". Реально файло читается блоками.
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836409
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ок спс понятно. ну поменять цифру 1 будет не сложно думаю. вообщем поменял на 8. пытаюсь считать простой текстовой файл. и все равно не то. структура файла вроде правильная.а вот символы не те
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836419
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не спец в Qt. Но вроде текстовые данные читаются через QTextStream. И обрати внимание на setCodec(..)

http://qt-project.org/doc/qt-4.8/qtextstream.html
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836421
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ не спец в Qt. Но вроде текстовые данные читаются через QTextStream. И обрати внимание на setCodec(..)

http://qt-project.org/doc/qt-4.8/qtextstream.html
я текстовой файл взял тоже для начала.на самом деле мне нужно будет скачивать бинарные файлы.они тоже не правильно записываются. почему то размер получается больше чем исходный
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда почему ты решил что символы "не те" ? Как догадался?
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836424
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
исходный
Код: sql
1.
2.
3.
4.
5.
User-agent: *
Disallow: /cabinet/
Disallow: /test/
Sitemap: http://kz-test.besaba.com/sitemap.xml
Host: kz-test.besaba.com/



результат
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
User-ageyT§хёЦnt: *
DyT§хёЦisallow:yT§хёЦ /cabineyT§хёЦt/
DisayT§хёЦllow: /tyT§хёЦest/
SiyT§хёЦtemap: hyT§хёЦttp://kzyT§хёЦ-test.beyT§хёЦsaba.comyT§хёЦ/sitemapyT§хёЦ.xml
HoyT§хёЦst: kz-tyT§хёЦest.besayT§хёЦba.com/
yT§хёЦ
a.com/
yT§хёЦ
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836437
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежник,

все разобрался вместо write(data) надо write(data,len)
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836487
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все получилось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 QFile *file=new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite)){
            qint64 fs=file->size();
            qint64 rs=reply->size();
            qint64 i=fs;
            int n=8;
            while (i<=rs){
                char data[8];
                if(rs-i<8)n=rs-i;
                reply->read(data,n);
                file->write(data,n);
                file->flush();
                i=i+8;
            }
            file->close();
        }
        delete file;


еще вопрос какой оптимальный размер лучше поставить для считывания
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836514
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежниквсе получилось
Угу. Только одна мелочь: ты каждый раз перекачиваешь весь файл заново вместо того чтобы
докачать только недостающее. Ну да скорость немеряна, траффик не считанный, а программист...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836601
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

еще раз повторяю здесь я сделал всего лишь запись побайтно.остальное я буду делать сам
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836661
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКартежниквсе получилось
Угу. Только одна мелочь: ты каждый раз перекачиваешь весь файл заново вместо того чтобы
докачать только недостающее. Ну да скорость немеряна, траффик не считанный, а программист...

а в каком месте написано что я каждый раз перекачиваю весь файл?
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836886
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежника в каком месте написано что я каждый раз перекачиваю весь файл?

Вот ты видишь указание HTTP серверу с какого байта начинать выдачу?.. И его нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836891
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКартежника в каком месте написано что я каждый раз перекачиваю весь файл?

Вот ты видишь указание HTTP серверу с какого байта начинать выдачу?.. И его нет.

а это не то?
Код: plaintext
1.
2.
3.
4.
5.
qint64 fs=file->size();
            qint64 rs=reply->size();
            qint64 i=fs;
            int n=8;
            while (i<=rs){
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836897
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается в данном случае он все равно получает весь файл,а только потом обрабатывает откуда читать и т.д.?
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836898
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а понял. там нужно использовать seek() ? или в данном случае все равно получится что весь файл скачаю, и с него уже будет считываться информация с нужного места?
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836919
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежника это не то?
А это вообще полная чушь, дающая весьма забавные спецэффекты о которых я не хочу
спойлерить. "Сурпрайз будет..." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
[QT] как организовать докачку файлов?
    #38836925
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКартежника в каком месте написано что я каждый раз перекачиваю весь файл?

Вот ты видишь указание HTTP серверу с какого байта начинать выдачу?.. И его нет.


на http сервере есть команда которая указыывает ему с какого байта выдавать инфу?
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT] как организовать докачку файлов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]