![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Никак не пойму почему код неправильно читает файл:
Добавлено @ 17:02 Торможу -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
А в чем именно неправильность?
Вот эта строка
Здесь получается так, что значение boolean (которое, кстати, всегда true) сравнивается с числом. Имхо, не очень хорошо. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Что-то ты путаешь. Где тут boolean ?
(received = sql_dump.read(cbuff) - вернет число считаных байт. И его потом сравнивают с нулем. Тут все чистенько. Скорее проблема в том, что строка формируется из полного массива, а это странно. Конец-то не всегда полностью покрывает весь массив. |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Пардон, стормозил под под конец рабочего дня.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| igon |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
Да, нужно что-то типа
Кроме того, достаточно ли анализировать только на
Возможна, хотя и маловероятна ситуация, когда sql_dump.read(cbuff) вернет 0, но конец файла еще достигнут не будет. ИМХО, читать нужно до тех пор, пока не получим -1. Странным кажется и размер буфера - 1024. Файл не может быть длиннее? sql_dump.read(cbuff) может ведь за раз считать и гораздо бОльшие фрагменты. Похоже, безопаснее использовать
-------------------- Хотите поговорить об этом? |
||||||||
|
|||||||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: 6 Всего: 24 |
Именно в этом и была проблема -------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Мы когда-то замеряли - получилось, что читать больше чем 4 Кб смысла особого уже нет. Но 1 Кб наверно маловато будет. Если конечно файлы не маленькие. А если маленькие, то тут вообщем-то по барабану. |
|||
|
||||
| igon |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
А разве можно управлять размером блока, считываемого из Stream в каждой итерации? Сколько Stream успеет подготовить, столько и выдаст - конкретное значение суть величина непредсказуемая. Единственное, что можем - "держать карман шире"
При маленьком length для варианта
-------------------- Хотите поговорить об этом? |
||||||
|
|||||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Ну переполнение - это как-то странно. А 4К - больше просто диск обычно не позволяет. Может сейчас можно и больше. В принципе IO операции ограничены работой с диском и тут большой массив просто будет дольше считываться и если обработка не очень сложная, то пока подготовиться следующие 4К можно успеть что-то сделать с предыдущими. А больше - ну а что лишний раз память есть. |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
Риск "переполнения" действительно мнимый, sorry
-------------------- Хотите поговорить об этом? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |