|
|
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Недавно изучаю яву. Мне необходимо считать файл в строковую переменную Можно это сделать покрасивее и попроще чем так))) в дот НЕТЕ например есть функция которая это делает в классе File ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 18:43:06 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
pmgns Вы написали код, который приводится в пример "Как не нужно делать". Давайте посмотрим, как нужно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 19:35:57 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
pmgns пишет: > Недавно изучаю яву. Мне необходимо считать файл в строковую переменную > Можно это сделать покрасивее и попроще чем так))) Как-нибудь так например можно: Код: plaintext 1. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 19:52:06 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
fynda пишет: > Как-нибудь так например можно: > > String string = IOUtils.toString(fr); Упс, гоню - IOUtils сторонняя штука... :) Тогда см. совет проктолога. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 19:54:37 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог pmgns Спасибо, производительность просто несравнима, мне это и нужно было Я так понимаю если мне с этой большущей строкой строкой много манипуляций надо производить и она будет постоянно меняться то тоже эффективнее StringBuffer , будет использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 21:03:35 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 1. Вместо StringBuffer - StringBuilder, он быстрей. StringBuffer надо использовать только если запись идет с нескольких нитей (ака thread). 2. Вмест readLine от BufferedReader сразу писать большими кусками (в данном случае - 65 кб за цикл). Так как свободный "хвост" в StringBuilder 16 символов, построчное чтение будет вынуждать пересоздавать массив внутри с перекопированием, чтение же большими кусками позволит уменьшить эту проблему, добившись еще более высокой скорости. 3. Кроме того, чтение readLine вынуждает сканировать входной поток на наличие символа CR, чтение в буффер этого не требует. Теперь по поводу работы с буферами StringBuffer/StringBuilder. Фактически, их рекомендуется создавать перед циклом накопления. После цикла накопление - всегда конверить в String и далее заниматься при необходимости вырезанием подстрок через .substring(). Каковые, при необходимости, накапливать в другом StringBuffer/StringBuilder. Которые, по окончании накопления, снова конвертить в String. Это связано с устройством объектов String. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 23:46:13 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Vurn Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 1. Вместо StringBuffer - StringBuilder, он быстрей. StringBuffer надо использовать только если запись идет с нескольких нитей (ака thread). 2. Вмест readLine от BufferedReader сразу писать большими кусками (в данном случае - 65 кб за цикл). Так как свободный "хвост" в StringBuilder 16 символов, построчное чтение будет вынуждать пересоздавать массив внутри с перекопированием, чтение же большими кусками позволит уменьшить эту проблему, добившись еще более высокой скорости. 3. Кроме того, чтение readLine вынуждает сканировать входной поток на наличие символа CR, чтение в буффер этого не требует. Это всё так, но я неспроста написал так, как написал. Кстати, за вот это Код: plaintext 1. 2. 3. 4. 5. 6. Не вынуждайте людей крупно ошибаться такими примерами — а по мелочам ничего страшного не случится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 12:12:15 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Vurn И не забывайте закрывать FileReader, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 12:12:56 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог[quot Vurn] Кстати, за вот это Код: plaintext 1. 2. 3. 4. 5. 6. Не вынуждайте людей крупно ошибаться такими примерами — а по мелочам ничего страшного не случится. а почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 12:34:24 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
хочу всё знать а почему? потому что об этом никто не узнает! ты не всчет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 13:10:57 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
хочу всё знатьа почему? Потому что тихо насрать в консоль, если файл отсутствует (или к нему нет доступа даже на чтение) — бессмысленно. Подобные функции — они чисто утилитарные. Как вести себя при невозможности чтения указанного файла — дело использующих эту функцию классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 13:32:08 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
А как относиться к такому совету? авторПростое приведение типа использовать в большинстве случаев нельзя - кодировка символов при этом не будет учитываться. Например, одной из самых распространённых ошибок является чтение данных побайтно при помощи метода read() из InputStream, а затем приведение полученного значения к типу char: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 13:50:28 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог вас следует расстрелять. Не вынуждайте людей крупно ошибаться такими примерами — а по мелочам ничего страшного не случится. И откуда только берется такая настырная категоричность? Обработка исключений, это большая и отдельная тема и по большому счету, с чтением файла в строку никак не связана и поэтому совсем не нужно убеждать людей, что throws IOException это единственный правильный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 13:56:22 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
wessenИ откуда только берется такая настырная категоричность? +1 Надо понимать, где пример, а где реальный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 14:20:42 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Leonidv wessenИ откуда только берется такая настырная категоричность? +1 Надо понимать, где пример, а где реальный код. Учительница русского языка всегда говорила, что писать в упражнениях или на доске слова с ошибками - это в корне неверно, потому что всегда найдётся дурак, которые запомнит не суть упражнения (исправить ошибку), а запомнит не правильное написание слова и будет его потом повторять. Можно и подругому подойти к этому вопросу. В области физиологии существует понятие динамического рефлекса. Это запоминание последовательности действий, которые выполняются на автомате. Например, техника бега, техника игры на пианино и т.п. Если привить себе плохую технику (был плохой тренер, писал дома код не обрабатывающий эксепшины), то избавиться от неё будет очень тяжко и в минуты душевной слабости она будет возвращаться. К тому же, понимание само по себе, ещё никого не избавило от проблем. Например от курения (как известно, что 90% курильщиков отлично понимают вред, который себе наносят). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 14:29:52 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Учительница русского языка всегда говорила, что писать в упражнениях или на доске слова с ошибками - это в корне неверно, потому что всегда найдётся дурак, которые запомнит не суть упражнения (исправить ошибку), а запомнит не правильное написание слова и будет его потом повторять. Можно и подругому подойти к этому вопросу. В области физиологии существует понятие динамического рефлекса. Это запоминание последовательности действий, которые выполняются на автомате. Например, техника бега, техника игры на пианино и т.п. Если привить себе плохую технику (был плохой тренер, писал дома код не обрабатывающий эксепшины), то избавиться от неё будет очень тяжко и в минуты душевной слабости она будет возвращаться. К тому же, понимание само по себе, ещё никого не избавило от проблем. Например от курения (как известно, что 90% курильщиков отлично понимают вред, который себе наносят). Т.е. ты хотел сказать, что throws IOException это единственный правильный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:14:33 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
wessen Т.е. ты хотел сказать, что throws IOException это единственный правильный вариант? я в топике про это не увидел... было автор } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } вас следует расстрелять. хоронить сообщение не нада! бывает что и Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:28:16 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
am_sasaхоронить сообщение не нада! бывает что и Код: plaintext Я не знаю случаев, когда возвращаемая строка лучше настоящего исключения. Не могу представить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:38:05 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
wessen И откуда только берется такая настырная категоричность? Обработка исключений, это большая и отдельная тема и по большому счету, с чтением файла в строку никак не связана и поэтому совсем не нужно убеждать людей, что throws IOException это единственный правильный вариант. throws IOException гораздо лучше Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:41:36 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог throws IOException гораздо лучше Код: plaintext 1. 2. 3. 4. 5. Чем лучше то? Нужно смотреть по обстоятельствам, кто-то может захочет в методе исключение разрулить. И более того, написание throws IOException не гарантирует, что кто-нибудь не сделает так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:57:42 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог[quot wessen] Ситуации, когда это не так, слишком специфичны, поэтому throws IOException можно писать смело и всегда. Если метод ничего не возвращает, то такое написание уместно. Если есть что возвращать, то придется как-то отличать результаты выполнения. При таком подходе мы не знаем точно что произошло: файл не читается или он просто пустой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:57:52 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог[ Я не знаю случаев, когда возвращаемая строка лучше настоящего исключения. Не могу представить. На веб-странице константный хедер и футер, которые берем из файла-ресурса и отправляем на оутпут. Если ошиблись, то в броузере видим эксепшен! номана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:58:02 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
am_sasaНа веб-странице константный хедер и футер, которые берем из файла-ресурса и отправляем на оутпут. Если ошиблись, то в броузере видим эксепшен! номана? Если ошиблись в чем? Что нет файла-ресурса, который должен быть? В любом случае — нужно возбудить исключение в читалке. А уж на странице перехватить его и вывести "Ниасилила я". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 18:00:57 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
wessenИ более того, написание throws IOException не гарантирует, что кто-нибудь не сделает так: Код: plaintext 1. 2. 3. Для отслеживания таких уродств есть Findbugs. Ну и, конечно, нужно потом объяснить человеку, что делать так нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 18:05:17 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог pmgns Вы написали код, который приводится в пример "Как не нужно делать". Давайте посмотрим, как нужно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 19:28:20 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог wessenИ более того, написание throws IOException не гарантирует, что кто-нибудь не сделает так: Код: plaintext 1. 2. 3. Для отслеживания таких уродств есть Findbugs. Ну и, конечно, нужно потом объяснить человеку, что делать так нельзя. Ну и конечно все забыли - что надо написать finaly блок - в котором закрывается поток )))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 19:32:22 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
В общем, все хороши :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 19:56:44 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Java Programmer Ну и конечно все забыли - что надо написать finaly блок - в котором закрывается поток )))))))) Я не забыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 20:20:16 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Java Programmer Имхо - не надо этим заниматься используйте FileUtils или IOUtils - не даром ребята с apache commons их лабали Прежде чем использовать сторонние утилиты, нужно как следует разобраться, что происходит на самом деле при чтении файлов и почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 20:21:55 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
wessenТ.е. ты хотел сказать, что throws IOException это единственный правильный вариант? Я сказал то, что сказал (в ответ Leonidv). Если говорить о том, нужно ли кинуть эксепшин вместо того, чтобы вернуть пустую строку, то всё зависит "от", но для большинства случаев ответ "да". Почему "да"? Потому что метод скорее всего утилитный и будет использоваться в разных контекстах и следовательно нельзя предсказать всегда ли можно игнорировать отсутствие файла. Кроме того, может быть важен не факт не возможности прочитать файл, но и причина, по которой этого сделать нельзя, чтобы правильно обработать ситуацию. Можно представить ситуацию, где отсутствие файла и отсутствие прав на чтение файла должны повлечь разную реакцию системы. А если разработчик "мамой клянётся", что файл точно будет (н-р, он лежит в одном jar с исполняемым кодом), что можно сделать методы, в названии которых будет отражено, что они вернут в случае ошибки ввода-вывода или отсутствия файла: вернут пустую строку, null или кинут runtime эксепшин для IOException и null для FileNotFound. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 22:33:51 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог В любом случае — нужно возбудить исключение в читалке. А уж на странице перехватить его и вывести "Ниасилила я". ты это серьезно? программа ради программы? не хорошо.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 10:03:11 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. 4. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 10:15:22 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
am_sasa Софтверный проктолог В любом случае — нужно возбудить исключение в читалке. А уж на странице перехватить его и вывести "Ниасилила я". ты это серьезно? программа ради программы? не хорошо.... Абсолютно серьезно. Ты не считаешь, что программа должна строиться из наборов компонент, взаимодействующих между собой? Причем взаимодействующих максимально гибко и широко? Прости, а как же ты пишешь свои программы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 10:34:11 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
am_sasa Софтверный проктолог В любом случае — нужно возбудить исключение в читалке. А уж на странице перехватить его и вывести "Ниасилила я". ты это серьезно? программа ради программы? не хорошо.... Не программа ради программы, а нормальная архитектура превыше всего. Подписался под всеми словами Проктолога. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 10:40:34 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог Ты не считаешь, что программа должна строиться из наборов компонент, взаимодействующих между собой? Причем взаимодействующих максимально гибко и широко? Прости, а как же ты пишешь свои программы? считаю и так их пишу! только из это не следует, что исключение надо вызывать всегда ! информацию о нем нельзя гробить, а вот способ доставки информации может быть разным! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 10:50:29 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
am_sasa , почитай зачем были придуманы исключения и как раньше обходились без них. Например, что такое IOResult в TurboPascal 7.0. То что ты предложил вместо throws использовать return flag, есть изобретение велосипеда без педалей и руля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 14:25:03 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Leonidv am_sasa , почитай зачем были придуманы исключения и как раньше обходились без них. Например, что такое IOResult в TurboPascal 7.0. То что ты предложил вместо throws использовать return flag, есть изобретение велосипеда без педалей и руля. А еще можно вспомнить C и вечный return -1... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 14:34:53 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
LeonidvТо что ты предложил вместо throws использовать return flag в каком месте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 15:12:12 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог Java Programmer Ну и конечно все забыли - что надо написать finaly блок - в котором закрывается поток )))))))) Я не забыл Пардон ) не углядел )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2007, 22:01:47 |
|
||
|
Чтение из файла
|
|||
|---|---|---|---|
|
#18+
Софтверный проктолог Java Programmer Имхо - не надо этим заниматься используйте FileUtils или IOUtils - не даром ребята с apache commons их лабали Прежде чем использовать сторонние утилиты, нужно как следует разобраться, что происходит на самом деле при чтении файлов и почему. Знаете, во первыйх я доверяю коммонсам аппачевским, а во вторых если ковыряться в каждой библиотеке которые я пользую можно дуба дать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2007, 22:03:08 |
|
||
|
|

start [/forum/search_topic.php?author=dirty_valera&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
13ms |
get forum list: |
24ms |
get settings: |
12ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
21ms |
get settings: |
14ms |
get forum list: |
25ms |
get settings: |
17ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
311ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 5715ms |
| total: | 6319ms |

| 0 / 0 |
