Java InputStreamReader (с примерами)

В этом руководстве мы узнаем о Java InputStreamReader и его методах с помощью примеров.

InputStreamReaderКласс java.ioпакета может использоваться для преобразования данных в байтах в данные символов.

Он расширяет абстрактный класс Reader.

InputStreamReaderКласс работает с другими входными потоками. Он также известен как мост между потоками байтов и потоками символов. Это потому, что InputStreamReaderбайты считываются из входного потока как символы.

Например, для хранения некоторых символов в хранилище требовалось 2 байта. Чтобы прочитать такие данные, мы можем использовать средство чтения входного потока, которое считывает 2 байта вместе и преобразует их в соответствующий символ.

Создать InputStreamReader

Чтобы создать файл InputStreamReader, мы должны java.io.InputStreamReaderсначала импортировать пакет. После того, как мы импортируем пакет, вот как мы можем создать считыватель входного потока.

 // Creates an InputStream FileInputStream file = new FileInputStream(String path); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file); 

В приведенном выше примере мы создали InputStreamReaderименованный вход вместе с FileInputStreamименованным файлом.

Здесь данные в файле хранятся с использованием кодировки символов по умолчанию.

Однако мы также можем указать тип кодировки символов ( UTF8 или UTF16 ) в файле.

 // Creates an InputStreamReader specifying the character encoding InputStreamReader input = new InputStreamReader(file, Charset cs); 

Здесь мы использовали Charsetкласс, чтобы указать кодировку символов в файле.

Методы InputStreamReader

InputStreamReaderКласс обеспечивает реализации для различных методов представления в Readerклассе.

read () Метод

  • read() - читает одиночный символ из ридера
  • read(char() array) - считывает символы из ридера и сохраняет в указанном массиве
  • read(char() array, int start, int length) - считывает из ридера количество символов, равное длине, и сохраняет в указанном массиве, начиная с начала

Например, предположим, что у нас есть файл с именем input.txt со следующим содержимым.

 This is a line of text inside the file. 

Попробуем прочитать этот файл, используя InputStreamReader.

 import java.io.InputStreamReader; import java.io.FileInputStream; class Main ( public static void main(String() args) ( // Creates an array of character char() array = new char(100); try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file); // Reads characters from the file input.read(array); System.out.println("Data in the stream:"); System.out.println(array); // Closes the reader input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Вывод

 Данные в потоке: это строка текста внутри файла. 

В приведенном выше примере мы создали считыватель входного потока, используя входной поток файла. Считыватель входного потока связан с файлом input.txt .

  FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file); 

Для чтения символов из файла мы использовали read()метод.

getEncoding () Метод

getEncoding()Метод может быть использован , чтобы получить тип кодирования , который используется для хранения данных во входном потоке. Например,

 import java.io.InputStreamReader; import java.nio.charset.Charset; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates an InputStreamReader with default encoding InputStreamReader input1 = new InputStreamReader(file); // Creates an InputStreamReader specifying the encoding InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8")); // Returns the character encoding of the input stream System.out.println("Character encoding of input1: " + input1.getEncoding()); System.out.println("Character encoding of input2: " + input2.getEncoding()); // Closes the reader input1.close(); input2.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Вывод

 Кодировка символов input1: Cp1252 Кодировка символов input2: UTF8 

В приведенном выше примере мы создали 2 считывателя входных потоков с именами input1 и input2.

  • input1 не указывает кодировку символов. Следовательно, getEncoding()метод возвращает каноническое имя кодировки символов по умолчанию.
  • input2 указывает кодировку символов UTF8 . Следовательно, getEncoding()метод возвращает указанную кодировку символов.

Примечание . Мы использовали этот Charset.forName()метод, чтобы указать тип кодировки символов. Чтобы узнать больше, посетите Java Charset (официальная документация по Java).

close () Метод

Чтобы закрыть средство чтения входного потока, мы можем использовать close()метод. После вызова close()метода мы не можем использовать средство чтения для чтения данных.

Другие методы InputStreamReader

Метод Описание
ready() проверяет, готов ли поток к чтению
mark() отметить позицию в потоке, до которой были прочитаны данные
reset() возвращает элемент управления в точку в потоке, где была установлена ​​метка

Чтобы узнать больше, посетите Java InputStreamReader (официальная документация по Java).

Интересные статьи...