|
|
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Я тащу с сервера большой файл (несколько Гигов), удалось скопировать 90% от файла и пользователь отключил программу (или компьютер, интернет и т.п.). Необходимо при следующем включении программы докачать эти 10% и склеить с теми 90% (так, например, делает программа мюTorrent). Скажите, в какую сторону мне рыть, чтобы это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:25:31 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Students, System.IO.FileStream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:42:12 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
А кто у нас "сервер"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:44:13 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
buserА кто у нас "сервер"? не знаю, на сервере другие люди работают, нам просто говорят, напишите запрос, мы реализуем. System.IO.FileStream - тут больше 1 Гб нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:52:24 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Alex KuznetsovStudents, System.IO.FileStream Если, скажем первый файл 3Гб и докачать нужно 2Гб, то как я их склею? Код: c# 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:56:41 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
в таком виде будет переполнение массива, хотя можно точно! можно всё разбить на куски и потом склеивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:57:29 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
да, всё. всем спасибо, вроде разобрался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 11:57:55 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Ну так и узнайте... поддерживает ли ваш сервер докачку... если да, то через какие механизмы. в противном случае... процесс придется повторять... а вот если поддерживает, то алгоритм тривиален :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:00:37 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
buserНу так и узнайте... поддерживает ли ваш сервер докачку... если да, то через какие механизмы. в противном случае... процесс придется повторять... а вот если поддерживает, то алгоритм тривиален :) бывают встроенные механизмы? я думал, что нужно: 1)зафиксировать, какой файл восстанавливался последним 2)сравнить его точный размер с размером на сервере (в байтах) 3)если размер не равен, то восстанавливаем начиная с нужного байта в другое место 4)склеиваем 2 куска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:04:11 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Вопрос то в чем? Нужно докачать оставшиеся 10% или они докачаны, и нужно дописать? StudentsSystem.IO.FileStream - тут больше 1 Гб нельзя. Почему? Вот пример дописывания в конец файла: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:15:19 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Students, да бывают... далеко ходить не нужно... ftp тогда алгоритм... читаем кусками фиксированного размера... после прочтения и успешной записи в конец файла +1... завалилось... подключились посмотрели сколько чанков выгрызли, передали серверу офсет... и понеслась дальше... сиком до конца последнего успешно записанного сегмента и пишем.... Это самый тупой вариант... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:19:33 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Arm79Вопрос то в чем? Нужно докачать оставшиеся 10% или они докачаны, и нужно дописать? StudentsSystem.IO.FileStream - тут больше 1 Гб нельзя. Почему? Вот пример дописывания в конец файла: Код: c# 1. у вас в этой строке переполнение будет, если байтов слишком много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:22:01 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
buserStudents, да бывают... далеко ходить не нужно... ftp тогда алгоритм... читаем кусками фиксированного размера... после прочтения и успешной записи в конец файла +1... завалилось... подключились посмотрели сколько чанков выгрызли, передали серверу офсет... и понеслась дальше... сиком до конца последнего успешно записанного сегмента и пишем.... Это самый тупой вариант... да, похоже ваш вариант самый лучший. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:23:08 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Studentsу вас в этой строке переполнение будет, если байтов слишком много У меня - не будет. Код - пример добавления порции байт в конец файла. Откуда эта порция - неважно. Глупо, конечно, выделять массив в оперативке сразу в гигабайт только организации буфера. Если у вас есть второй файл, кто мешает читать порциями с него и дописывать в старый? Если у вас MemorySteam, аналогично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:24:57 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Students, Читать весь файл в буфер - моветон, особенно если он большого размера. Как уже говорили - узнавайте у сервера размер итогового файла, разбивайте на приемлемые по размеру куски и выкачивайте, затем дописывайте кусочки в конец файла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:26:57 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
да, хорошо, я всё понял. спасибо за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:30:53 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Про контроль целостности крепко подумай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:38:39 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
НахлобучПро контроль целостности крепко подумай. а есть варианты? Когда все докачал взял md5 и сравнил. Просто кто даст исходный md5 :) Во всяком случае торрент вроде так делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 12:53:33 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
netivanа есть варианты? Когда все докачал взял md5 и сравнил. Просто кто даст исходный md5 :) Во всяком случае торрент вроде так делает.Перспектива: скачать 3 Гб, выяснить что где-то там в нем ошибка и качать все заново, опять без гарантий корректности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 13:02:17 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
Нахлобучnetivanа есть варианты? Когда все докачал взял md5 и сравнил. Просто кто даст исходный md5 :) Во всяком случае торрент вроде так делает.Перспектива: скачать 3 Гб, выяснить что где-то там в нем ошибка и качать все заново, опять без гарантий корректности. а ваши предложения? в любом случае без поддержки сервера мне кажется это невозможно.Или все качать по 2 раза и сравнивать?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 14:05:57 |
|
||
|
чем "склеить" файл?
|
|||
|---|---|---|---|
|
#18+
netivanа ваши предложения? в любом случае без поддержки сервера мне кажется это невозможно.Или все качать по 2 раза и сравнивать?:) Да, поддержка докачки бесспорно потребуется (но она, я так понимаю, уже есть, кольк скоро ТС умеет докачивать последние 10%). А в качестве решения -- например, можно хранить рядом со скачиваемым файлом еще один, в которм в n -й строке будет храниться md5 n -го мегабайта исходного файла, а на последней -- md5 всего, что было до этого. Сначала качаем этот маленький файл, потом начинаем скачивать большой, попутно считая хэши и сравнивая с известными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2013, 14:50:50 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=38460167&tid=1403706]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
192ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 186ms |
| total: | 476ms |

| 0 / 0 |
