У цьому посібнику ми дізнаємося про 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).