Java InputStreamReader (Dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai Java InputStreamReader dan kaedahnya dengan bantuan contoh.

The InputStreamReadergolongan orang java.iopakej boleh digunakan untuk menukar data dalam bait ke dalam data dalam huruf.

Ia meluaskan kelas abstrak Reader.

The InputStreamReaderkelas berfungsi dengan aliran input lain. Ia juga dikenali sebagai jambatan antara aliran bait dan aliran watak. Ini kerana InputStreamReaderbait yang dibaca dari aliran input sebagai watak.

Sebagai contoh, sebilangan watak memerlukan 2 bait untuk disimpan di tempat simpanan. Untuk membaca data tersebut, kita dapat menggunakan pembaca aliran input yang membaca 2 bait bersama-sama dan menukar menjadi watak yang sesuai.

Buat InputStreamReader

Untuk membuat InputStreamReader, kita mesti mengimport java.io.InputStreamReaderpakej terlebih dahulu. Sebaik sahaja kami mengimport pakej di sini adalah bagaimana kita 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 fail disimpan menggunakan beberapa pengekodan watak lalai.

Walau bagaimanapun, kita dapat menentukan jenis pengekodan watak ( UTF8 atau UTF16 ) dalam fail juga.

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

Di sini, kami telah menggunakan Charsetkelas untuk menentukan pengekodan watak dalam fail.

Kaedah InputStreamReader

The InputStreamReaderkelas menyediakan pelaksanaan untuk kaedah yang berbeza hadir dalam Readerkelas.

baca () Kaedah

  • read() - membaca watak tunggal dari pembaca
  • read(char() array) - membaca watak dari pembaca dan menyimpan dalam susunan yang ditentukan
  • read(char() array, int start, int length) - membaca bilangan aksara sama dengan panjang dari pembaca dan menyimpan dalam susunan yang ditentukan bermula dari awal

Sebagai contoh, anggaplah kita mempunyai fail bernama input.txt dengan kandungan berikut.

 This is a line of text inside the file. 

Mari cuba baca fail 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(); ) ) ) 

Pengeluaran

 Data dalam aliran: Ini adalah sebaris teks di dalam fail. 

Dalam contoh di atas, kami telah membuat pembaca aliran input menggunakan aliran input fail. Pembaca aliran input dihubungkan dengan input.txt fail .

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

Untuk membaca watak dari fail, kami telah menggunakan read()kaedahnya.

kaedah getEncoding ()

The getEncoding()kaedah boleh digunakan untuk mendapatkan jenis pengekodan yang digunakan untuk menyimpan data dalam aliran input. 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(); ) ) ) 

Pengeluaran

 Pengekodan watak input1: Cp1252 Pengekodan watak input2: UTF8 

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

  • input1 tidak menentukan pengekodan watak. Oleh itu getEncoding()kaedah mengembalikan nama kanonik pengekodan watak lalai.
  • input2 menentukan pengekodan watak, UTF8 . Oleh itu getEncoding()kaedah mengembalikan pengekodan watak yang ditentukan.

Catatan : Kami telah menggunakan Charset.forName()kaedah untuk menentukan jenis pengekodan watak. Untuk mengetahui lebih lanjut, lawati Java Charset (dokumentasi Java rasmi).

tutup () Kaedah

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

Kaedah Lain InputStreamReader

Kaedah Penerangan
ready() memeriksa sama ada aliran itu siap dibaca
mark() tandakan kedudukan dalam aliran sehingga data yang telah dibaca
reset() mengembalikan kawalan ke titik di aliran di mana tanda itu ditetapkan

Untuk mengetahui lebih lanjut, kunjungi Java InputStreamReader (dokumentasi Java rasmi).

Artikel menarik...