| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Код неправильно читает файл |
| Автор: 3,14 20.4.2005, 16:58 | ||
Никак не пойму почему код неправильно читает файл:
Добавлено @ 17:02 Торможу |
| Автор: batigoal 20.4.2005, 17:04 | ||
| А в чем именно неправильность? Вот эта строка
Здесь получается так, что значение boolean (которое, кстати, всегда true) сравнивается с числом. Имхо, не очень хорошо. |
| Автор: AntonSaburov 20.4.2005, 18:12 | ||||
Что-то ты путаешь. Где тут boolean ?
(received = sql_dump.read(cbuff) - вернет число считаных байт. И его потом сравнивают с нулем. Тут все чистенько. Скорее проблема в том, что строка формируется из полного массива, а это странно. Конец-то не всегда полностью покрывает весь массив. |
| Автор: batigoal 20.4.2005, 22:29 |
| Пардон, стормозил под под конец рабочего дня. |
| Автор: igon 20.4.2005, 23:35 | ||||||||
Да, нужно что-то типа
Кроме того, достаточно ли анализировать только на
Возможна, хотя и маловероятна ситуация, когда sql_dump.read(cbuff) вернет 0, но конец файла еще достигнут не будет. ИМХО, читать нужно до тех пор, пока не получим -1. Странным кажется и размер буфера - 1024. Файл не может быть длиннее? sql_dump.read(cbuff) может ведь за раз считать и гораздо бОльшие фрагменты. Похоже, безопаснее использовать
|
| Автор: 3,14 21.4.2005, 08:18 | ||
Именно в этом и была проблема |
| Автор: AntonSaburov 21.4.2005, 15:58 | ||
Мы когда-то замеряли - получилось, что читать больше чем 4 Кб смысла особого уже нет. Но 1 Кб наверно маловато будет. Если конечно файлы не маленькие. А если маленькие, то тут вообщем-то по барабану. |
| Автор: igon 22.4.2005, 00:16 | ||||||
А разве можно управлять размером блока, считываемого из Stream в каждой итерации? Сколько Stream успеет подготовить, столько и выдаст - конкретное значение суть величина непредсказуемая. Единственное, что можем - "держать карман шире"
При маленьком length для варианта
|
| Автор: AntonSaburov 22.4.2005, 14:17 | ||
Ну переполнение - это как-то странно. А 4К - больше просто диск обычно не позволяет. Может сейчас можно и больше. В принципе IO операции ограничены работой с диском и тут большой массив просто будет дольше считываться и если обработка не очень сложная, то пока подготовиться следующие 4К можно успеть что-то сделать с предыдущими. А больше - ну а что лишний раз память есть. |
| Автор: igon 24.4.2005, 02:09 |
| Риск "переполнения" действительно мнимый, sorry |