| Виды программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
передача данных из апплета путь к файлу Java + Ms Sql Server Перегрузка операторов JavaOS, about JavaOS где взять CLDC для J2me - на сайте Sun не дают, CLDC download Как Вы относитесь к курящим девушкам? Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки Трабла в Linux, Помогите пожалуйста Java vs. C, Как вы думаете что лучше C или Java Java ICQ applet. Как это сделано?, Хотелось бы уяснить основные принципы Канва в Яве, Как вычеслить? JDBC drivers , ClassPath, Регистрация JDBC драйверов Предпочитаемый IDE javap, big problem tomcat-3.2.1 перекодировка строк из UTF-8 в KOI8-R, перекодировка строк из UTF-8 в KOI8-R mouse wheel fix NetBeans3.3, Help to find manual Eclipse и CDT, Что такое CDT Сервлеты, JSP, WebApplication jdk1.4, куда девался javac Имитация нажатия клавиши в Java Имя компьютера JTree, JTree без создания объектов DefaultMutab jdbc connection + fonts in jDeveloper Static Menu Как заставить JScrollPane отображать верхнюю ... Как заставить JScrollPane отображать верхнюю ... RMI, RMI & DB Java & SNMP, Опрос устройств из Java по протоколуSNMP открытие URL из апплета Вопрос по cocoon2 JComboBox в JTableHeader java3D, ERROR: Canvas3D constructed with a null Вопрос!!, Как написать... получение информации о устройстве., получение информации о устройстве ПОМОГИТЕ!, составление програмы Java & Perl, Java & Perl нужна прога$$$, нужна прога$$$ Здравствуйте., Рисование в окне апплета. Getting started..., Слоны идут на север biblioteki vektornoj grafiki k SWING Как Вы относитесь к курящим девушкам? Прежде чем задать вопрос, прочтите это! Работа с Threads. Давайте разберёмся, Получиться неплохой компонент. Документация и книги по Java, Давайте соберём ссылки Каким IDE вы пользуетесь, при программировании на Java Бесплатное ПО на Java Каким компилятором вы пользуетесь Прежде чем задать вопрос, прочтите это! FAQ по JAVA, Вопросы и ответы JNI и потоки Как "поженить" эклипсу с ant'ом?, Или делать JAR напрямую в эклипсе? Вопрос о возможностях JBuilder2005 Eclipse - проект со своим разбросом файлов, по package'ам Код неправильно читает файл JBuilder2005 & XDoclet, как-бы срастить вместе? Что такое hibernate ? Hibernate & BLOB DB field, подскажите - во что выливается BLOB разработка плагина под еклипсе.., у кого-нибудь есть опыт? jar в IDEA Программное представление HTML элементов, существует ли в природе? Проблема при запуске программы, Помогите добавление библиотеки mail, Использую NetBeans генерация SHA подписи, при build-е проекта (eclipse/ant) build большого проекта, eclipse BufferedImage Посоветуйте framework!, Нужен framework для создании выборок |
Платные хостинги Раскрутка сайта Книги по программированию Код неправильно читает файл
- Никак не пойму почему код неправильно читает файл:Код package techlib;import java.io.*;import java.net.*;import javax.mail.*;import javax.mail.internet.*;import java.util.*;import javax.activation.*;import javax.servlet.*;import javax.servlet.http.*;public class install extends HttpServlet{ public void service( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body>"); String file_name = "/users/techlib/techlib_books.sql"; FileReader sql_dump = new FileReader(file_name); char [] cbuff = new char [1024]; int received = 0; String sqlQueries = ""; while ((received = sql_dump.read(cbuff)) > 0) { sqlQueries += new String(cbuff); } out.println(sqlQueries.replaceAll("[\\n\\r]+", "<br>")); out.println("</body></html>"); }}highlightSyntax('javazQwY2Q','java'); Добавлено @ 17:02 Торможу , всё понял - А в чем именно неправильность?Вот эта строкаКод while ((received = sql_dump.read(cbuff)) > 0)highlightSyntax('javaODgzNj','java');Здесь получается так, что значение boolean (которое, кстати, всегда true) сравнивается с числом. Имхо, не очень хорошо. - Что-то ты путаешь. Где тут boolean ?Код while ((received = sql_dump.read(cbuff)) > 0)highlightSyntax('javaOTFlND','java');(received = sql_dump.read(cbuff) - вернет число считаных байт. И его потом сравнивают с нулем. Тут все чистенько.Скорее проблема в том, что строка формируется из полного массива, а это странно. Конец-то не всегда полностью покрывает весь массив. - Пардон, стормозил под под конец рабочего дня. - Да, нужно что-то типа Цитата sqlQueries += new String(cbuff, 0, received);Кроме того, достаточно ли анализировать только на Цитата received > 0 ?Возможна, хотя и маловероятна ситуация, когда sql_dump.read(cbuff) вернет 0, но конец файла еще достигнут не будет.ИМХО, читать нужно до тех пор, пока не получим -1.Странным кажется и размер буфера - 1024. Файл не может быть длиннее? sql_dump.read(cbuff) может ведь за раз считать и гораздо бОльшие фрагменты.Похоже, безопаснее использоватьЦитата public int read(char[] cbuf, int offset, // 0 int length) // 1024 throws IOExceptionRead characters into a portion of an array. - Именно в этом и была проблема - Мы когда-то замеряли - получилось, что читать больше чем 4 Кб смысла особого уже нет. Но 1 Кб наверно маловато будет. Если конечно файлы не маленькие. А если маленькие, то тут вообщем-то по барабану. - А разве можно управлять размером блока, считываемого из Stream в каждой итерации? Сколько Stream успеет подготовить, столько и выдаст - конкретное значение суть величина непредсказуемая. Единственное, что можем - "держать карман шире" При маленьком буфере для варианта Код read(cbuff) highlightSyntax('javaMjUyZW','java');рискуем получать "Переполнение массива".При маленьком length для варианта Код read(cbuf, offset, length) highlightSyntax('javaTI3MGF','java');придется сделать больше итераций. Оптимальные значения - 4K - Ну переполнение - это как-то странно.А 4К - больше просто диск обычно не позволяет. Может сейчас можно и больше. В принципе IO операции ограничены работой с диском и тут большой массив просто будет дольше считываться и если обработка не очень сложная, то пока подготовиться следующие 4К можно успеть что-то сделать с предыдущими. А больше - ну а что лишний раз память есть. - Риск "переполнения" действительно мнимый, sorry (RTFM - и еще одной иллюзией меньше ) |