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(); ) ) ) 

Изход

 Кодиране на знаци на вход1: Cp1252 Кодиране на знаци на вход2: UTF8 

В горния пример създадохме 2 четеца на входни потоци, наречени input1 и input2.

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

Забележка : Използвахме Charset.forName()метода, за да определим типа кодиране на символи. За да научите повече, посетете Java Charset (официална документация за Java).

метод close ()

За да затворим четеца на входния поток, можем да използваме close()метода. След като close()методът бъде извикан, не можем да използваме четеца за четене на данните.

Други методи на InputStreamReader

Метод Описание
ready() проверява дали потокът е готов за четене
mark() маркирайте позицията в потока, до която са прочетени данните
reset() връща контролата към точката в потока, където е зададена маркировката

За да научите повече, посетете Java InputStreamReader (официална документация за Java).

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