powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / InputStream to String
11 сообщений из 11, страница 1 из 1
InputStream to String
    #33644036
э...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется InputStream как данные из него конвертнуть в String?
...
Рейтинг: 0 / 0
InputStream to String
    #33644070
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
InputStream to String
    #33644213
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно код еще чуток улучшить, воткнув сразу считывание в строку, а не посимвольно :)
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
InputStream to String
    #33644265
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедший
скорее всего sb.append(s).append("\n");
...
Рейтинг: 0 / 0
InputStream to String
    #33644376
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™ Зашедший
скорее всего sb.append(s).append("\n");
Нет, считывается именно строка, включая завершающий нуль. Если readLine() вернул null - значит, в потоке (файле) больше нет ни одной строки и мы дошли до EOF.
...
Рейтинг: 0 / 0
InputStream to String
    #33644501
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожно код еще чуток улучшить, воткнув сразу считывание в строку, а не посимвольно :)

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

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

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

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

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

"Нет, считывается именно строка, включая завершающий нуль. Если readLine() вернул null - значит, в потоке (файле) больше нет ни одной строки и мы дошли до EOF."
А то! :) И ведь работал с этой штукой, но там в файле в конце каждой строки был специальный дополнительный символ перевода типа тильды, я по ним потом и разбивал, заменяя на /n, а в памяти отложилось что сохраняет перевод... О как :(
...
Рейтинг: 0 / 0
InputStream to String
    #33646915
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что если проще:
Код: 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
InputStream to String
    #33646922
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть факт того, что содержимое файла нужно считать в переменную String, то буферизированное чтение по строкам неэффективно и ллучше прочитать файл одним махом, задав буфер равным длине файла.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / InputStream to String
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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