|
|
|
Чтение из файла
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34840968&tid=2144421]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 306ms |
| total: | 483ms |

| 0 / 0 |
