Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / InputStream to String / 11 сообщений из 11, страница 1 из 1
04.04.2006, 16:18
    #33644036
э...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
Имеется InputStream как данные из него конвертнуть в String?
...
Рейтинг: 0 / 0
04.04.2006, 16:26
    #33644070
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    /**
     * Открытие файла с указанием кодировки и преобразование его в строку
     * @throws java.io.FileNotFoundException
     * @return открытый файл в виде строки
     */
     public   static  String openFileAsString( String fileName, String charset )
         throws  Exception {
        InputStreamReader isr =
             new  InputStreamReader(  new  FileInputStream( fileName ),
                                   charset );
        BufferedReader buff =  new  BufferedReader( isr );
        StringBuffer strBuff =  new  StringBuffer();
         int  c;

         while  ( ( c = buff.read() ) != - 1  ) {
            strBuff.append( (  char  )c );
        }

         return  strBuff.toString();
    }
...
Рейтинг: 0 / 0
04.04.2006, 17:13
    #33644213
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
Можно код еще чуток улучшить, воткнув сразу считывание в строку, а не посимвольно :)
wessen
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    /**
     * Открытие файла с указанием кодировки и преобразование его в строку
     * @throws java.io.FileNotFoundException
     * @return открытый файл в виде строки
     */
     public   static  String openFileAsString( String fileName, String charset )
         throws  Exception {
        InputStreamReader isr =
             new  InputStreamReader(  new  FileInputStream( fileName ),
                                   charset );
        BufferedReader buff =  new  BufferedReader( isr );
        StringBuffer strBuff =  new  StringBuffer();
        
        //читаем строку, а не чар
        String s;
         while  ( ( s = buff.readLine() ) !=  null  ) {
            strBuff.append(s);
        }

         return  strBuff.toString();
    }
...
Рейтинг: 0 / 0
04.04.2006, 17:29
    #33644265
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
Зашедший
скорее всего sb.append(s).append("\n");
...
Рейтинг: 0 / 0
04.04.2006, 18:02
    #33644376
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
А.Грасоff™ Зашедший
скорее всего sb.append(s).append("\n");
Нет, считывается именно строка, включая завершающий нуль. Если readLine() вернул null - значит, в потоке (файле) больше нет ни одной строки и мы дошли до EOF.
...
Рейтинг: 0 / 0
04.04.2006, 18:41
    #33644501
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
авторМожно код еще чуток улучшить, воткнув сразу считывание в строку, а не посимвольно :)

тут вопрос спорный, т.к. метод readLine сам посимвольно все считывает.

а Грасафф правильно подсказал, так не будут терятся символы конца строки, если они были в исходном файле. Я как то с этой фичей или багом метода readLine уже помучился. И нафиг они так сделали?
...
Рейтинг: 0 / 0
04.04.2006, 18:50
    #33644526
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
wessen авторМожно код еще чуток улучшить, воткнув сразу считывание в строку, а не посимвольно :)

тут вопрос спорный, т.к. метод readLine сам посимвольно все считывает.

а Грасафф правильно подсказал, так не будут терятся символы конца строки, если они были в исходном файле. Я как то с этой фичей или багом метода readLine уже помучился. И нафиг они так сделали?
Мда, я облажался. Действительно игнорирует перевод каретки.
...
Рейтинг: 0 / 0
04.04.2006, 19:21
    #33644593
А.Грасоff™
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
ЗашедшийМда, я облажался. Действительно игнорирует перевод каретки.зато текст красивый написал :)

"Нет, считывается именно строка, включая завершающий нуль. Если readLine() вернул null - значит, в потоке (файле) больше нет ни одной строки и мы дошли до EOF."
...
Рейтинг: 0 / 0
04.04.2006, 20:25
    #33644678
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
А.Грасоff™ ЗашедшийМда, я облажался. Действительно игнорирует перевод каретки.зато текст красивый написал :)

"Нет, считывается именно строка, включая завершающий нуль. Если readLine() вернул null - значит, в потоке (файле) больше нет ни одной строки и мы дошли до EOF."
А то! :) И ведь работал с этой штукой, но там в файле в конце каждой строки был специальный дополнительный символ перевода типа тильды, я по ним потом и разбивал, заменяя на /n, а в памяти отложилось что сохраняет перевод... О как :(
...
Рейтинг: 0 / 0
05.04.2006, 16:24
    #33646915
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
а что если проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public   static  String openFileAsString( String fileName, String charset )  throws  Exception {

InputStream is =  new  BufferedInputStream( new  FileInputStream(fileName));
 byte [] data =  new   byte [is.available()];
is.read(data);
is.close();

 return   new  String(data, charset);
}

...
Рейтинг: 0 / 0
05.04.2006, 16:26
    #33646922
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
InputStream to String
если есть факт того, что содержимое файла нужно считать в переменную String, то буферизированное чтение по строкам неэффективно и ллучше прочитать файл одним махом, задав буфер равным длине файла.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / InputStream to String / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]