|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Ищу другие варианты для чтения и сохранения файла большого размера. А в моем случае - передача файла по сети своей программой. С большим размером файла LOF начинает ругаться, что в принципе логично. Есть другие варианты, можно читать кусками файл, но я еще не определился какой именно способ подойдет наилучше. Трудность в том, что программу тяжело отслеживать так как одна работает как сервер, а другая как клиент и умеет работать наоборот. На эксперименты уйдет день. Если есть практика, прошу помощи. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 12:34 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Андрей159, Почему Вы для чтения файла не используете специально для этого имеющиеся классы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 12:49 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Не знаю никаких классов. Да и тестировал: работа через классы удобная но чуть помедленней будет работать. Были как-то проблемы с FileLen функцией. Сначала вроде все нормально работало, потом ошибки посыпались и я попробовал заменить эту функцию на LOF, которая не подводила с малым размером. Отсчет могу делать неважно как, даже просто переменной можно подсчитывать поточное положение. А вот длину файла нужно знать точно. Моя задача - узнать точно длину файла, чтоб функция работала безотказно. Дальше все работает. Например open... binary также работает отлично с любой длинной. Но нужно считывать данные порциями, а в конце порция может быть меньшая. Именно потому и заморачиваюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 16:01 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Так открывай свой файл как поток (хоть textstream, хоть ado.stream) и читай... и позицию проверять не надо, как до конца доберёшься, он тебе отдаст, что осталось, и скажет, что больше нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 17:09 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Отлично. А в этом потоке можно указывать части (размер блоков) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 17:50 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Эммм... а справку читать не пробовал? параметры какие, примеры там посмотреть.. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 18:08 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Андрей159, Я давно такое не делал, поэтому насчет порций не скажу, но под классом я и подразумевал класс TextStream. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 22:21 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Заменил конструкцию GET на INPUT(Nb,#nomFile) - работает отлично с большим объемом. Спасло то, что остатки файла несмотря на указание параметра "Nb" в INPUT не вызывает ошибку. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Но на этом эксперименты не прекращаю. Охотно попробую чтение и запись в режиме Random что в будущем, если все тесты будут успешны, даст возможность делать докачки и закачки в несколько потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 22:23 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Одно такое наблюдение, вероятно может кому и пригодится: В предыдущем коде есть метка "che:" а две строчки отключены: Код: vbnet 1. 2. 3. 4.
Прокомментирую строчки. Хотел увеличить скорость передачи данных, в результате скорость в десятки а может и больше упала. Тогда решил проверить что делается в "диспетчере задач Виндовс". А там обнаружил, что объем программы растет с каждой секундой на килобайты. Поставил код на паузу и закоментировал две строчки. После этого память больше не увеличивалась. А спустя три минуты объем программы медленно опустился до изначального уровня. Таймер стоит на 10мс. Если таймер не использовать, то при габаритном файле выскакивает ошибка которая матерится на Memory (что там дальше не брал во внимание, так как видел что память увеличивается). Doevents не спасает от горя, а таймер - запросто. Скорость копирования на адрес 127.0.0.1 примерно в среднем + - = 1 мегабайта в секунду ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 22:36 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Зарвешил. Дозагрузка невозможна (произвальная перезапись нужных участков) если размер превышает больше 2гб ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 23:36 |
|
Чтение файла большого размера и сохранение его побайтно с другим именем
|
|||
---|---|---|---|
#18+
Сделал обычную докачку типа append просто предварительно сверив длину файлов на local и remote PC. Работает за счет файлов с расширением *.*.tmp Так их и отлавливаю для анализа. Остается сверить, докачать и переименовать. Все. Можно тему закрывать ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2013, 00:31 |
|
|
start [/forum/topic.php?fid=60&msg=38486691&tid=2156667]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 164ms |
0 / 0 |