Java InputStreamReader (Dengan Contoh)

Dalam tutorial ini, kita akan belajar tentang Java InputStreamReader dan metodenya dengan bantuan contoh.

The InputStreamReaderkelas dari java.iopaket dapat digunakan untuk mengkonversi data dalam byte menjadi data dalam karakter.

Ini memperluas kelas abstrak Reader.

The InputStreamReaderkelas bekerja dengan aliran masukan lainnya. Ia juga dikenal sebagai jembatan antara aliran byte dan aliran karakter. Ini karena InputStreamReaderbyte membaca dari aliran input sebagai karakter.

Misalnya, beberapa karakter memerlukan 2 byte untuk disimpan di penyimpanan. Untuk membaca data tersebut, kita dapat menggunakan pembaca aliran input yang membaca 2 byte bersama-sama dan mengubahnya menjadi karakter yang sesuai.

Buat InputStreamReader

Untuk membuat InputStreamReader, kita harus mengimpor java.io.InputStreamReaderpaketnya terlebih dahulu. Setelah kami mengimpor paket di sini adalah bagaimana kami dapat membuat pembaca aliran input.

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

Dalam contoh di atas, kami telah membuat InputStreamReaderinput bernama bersama dengan FileInputStreamfile bernama.

Di sini, data dalam file disimpan menggunakan beberapa pengkodean karakter default.

Namun, kami juga dapat menentukan jenis pengkodean karakter ( UTF8 atau UTF16 ) di file.

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

Di sini, kami telah menggunakan Charsetkelas untuk menentukan pengkodean karakter dalam file.

Metode InputStreamReader

The InputStreamReaderkelas menyediakan implementasi untuk metode yang berbeda hadir di Readerkelas.

read () Metode

  • read() - membaca satu karakter dari pembaca
  • read(char() array) - membaca karakter dari pembaca dan menyimpannya dalam larik yang ditentukan
  • read(char() array, int start, int length) - membaca jumlah karakter yang sama dengan panjang dari pembaca dan menyimpan dalam larik yang ditentukan mulai dari awal

Misalnya, kita memiliki file bernama input.txt dengan konten berikut.

 This is a line of text inside the file. 

Mari kita coba membaca file ini menggunakan 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(); ) ) ) 

Keluaran

 Data dalam aliran: Ini adalah baris teks di dalam file. 

Dalam contoh di atas, kami telah membuat pembaca aliran input menggunakan aliran input file. Pembaca input stream ditautkan dengan file input.txt .

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

Untuk membaca karakter dari file, kami telah menggunakan read()metode ini.

Metode getEncoding ()

The getEncoding()metode dapat digunakan untuk mendapatkan jenis encoding yang digunakan untuk menyimpan data di input stream. Sebagai contoh,

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

Keluaran

 Pengkodean karakter input1: Cp1252 Pengkodean karakter input2: UTF8 

Dalam contoh di atas, kami telah membuat 2 pembaca aliran input bernama input1 dan input2.

  • input1 tidak menentukan pengkodean karakter. Karenanya getEncoding()metode ini mengembalikan nama kanonik dari pengkodean karakter default.
  • input2 menentukan pengkodean karakter, UTF8 . Karenanya getEncoding()metode mengembalikan pengkodean karakter yang ditentukan.

Catatan : Kami telah menggunakan Charset.forName()metode untuk menentukan tipe pengkodean karakter. Untuk mempelajari lebih lanjut, kunjungi Java Charset (dokumentasi resmi Java).

close () Metode

Untuk menutup pembaca aliran input, kita dapat menggunakan close()metode. Setelah close()metode dipanggil, kita tidak dapat menggunakan pembaca untuk membaca data.

Metode lain dari InputStreamReader

metode Deskripsi
ready() memeriksa apakah aliran siap untuk dibaca
mark() tandai posisi dalam aliran yang datanya telah dibaca
reset() mengembalikan kontrol ke titik di aliran tempat tanda ditetapkan

Untuk mempelajari lebih lanjut, kunjungi Java InputStreamReader (dokumentasi resmi Java).

Artikel yang menarik...