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).

Цікаві статті...