Dalam tutorial ini, kita akan belajar mengenai Java InputStreamReader dan kaedahnya dengan bantuan contoh.
The InputStreamReader
golongan orang java.io
pakej boleh digunakan untuk menukar data dalam bait ke dalam data dalam huruf.
Ia meluaskan kelas abstrak Reader
.
The InputStreamReader
kelas berfungsi dengan aliran input lain. Ia juga dikenali sebagai jambatan antara aliran bait dan aliran watak. Ini kerana InputStreamReader
bait 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.InputStreamReader
pakej 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 InputStreamReader
input bernama bersama dengan FileInputStream
file 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 Charset
kelas untuk menentukan pengekodan watak dalam fail.
Kaedah InputStreamReader
The InputStreamReader
kelas menyediakan pelaksanaan untuk kaedah yang berbeza hadir dalam Reader
kelas.
baca () Kaedah
read()
- membaca watak tunggal dari pembacaread(char() array)
- membaca watak dari pembaca dan menyimpan dalam susunan yang ditentukanread(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).