Ebben az oktatóanyagban példák segítségével megismerhetjük a Java InputStreamReader programot és annak módszereit.
A csomag InputStreamReader
osztálya java.io
felhasználható a bájtban lévő adatok karakterekké alakítására.
Kiterjeszti az absztrakt osztályt Reader
.
Az InputStreamReader
osztály más bemeneti folyamokkal működik. Hídként is ismert a bájtfolyamok és a karakterfolyamok között. Ez azért van, mert a InputStreamReader
bemeneti adatfolyam bájtjait karakterként olvassa fel.
Például néhány karakter 2 bájtot igényelt a tárolóban. Az ilyen adatok kiolvasásához használhatjuk azt a bemeneti adatfolyam-olvasót, amely együtt olvassa el a 2 bájtot és átalakítja a megfelelő karaktert.
Hozzon létre egy InputStreamReader-t
A létrehozásához először InputStreamReader
importálnunk kell a java.io.InputStreamReader
csomagot. A csomag importálása után itt hozhatjuk létre az input stream olvasót.
// Creates an InputStream FileInputStream file = new FileInputStream(String path); // Creates an InputStreamReader InputStreamReader input = new InputStreamReader(file);
A fenti példában létrehoztunk egy InputStreamReader
megnevezett bemenetet a FileInputStream
megnevezett fájllal együtt.
Itt a fájl adatait valamilyen alapértelmezett karakterkódolással tárolják.
Megadhatjuk azonban a karakterkódolás típusát ( UTF8 vagy UTF16 ) a fájlban is.
// Creates an InputStreamReader specifying the character encoding InputStreamReader input = new InputStreamReader(file, Charset cs);
Itt az Charset
osztályt használtuk a fájlban található karakterkódolás megadására.
Az InputStreamReader módszerei
Az InputStreamReader
osztály megvalósításokat biztosít az Reader
osztályban jelen lévő különböző módszerek számára .
read () módszer
read()
- egyetlen karaktert olvas fel az olvasóread(char() array)
- beolvassa a karaktereket az olvasóból és eltárolja a megadott tömbbenread(char() array, int start, int length)
- beolvassa az olvasóból a hosszúsággal megegyező karakterek számát, és eleve tárolja a megadott tömbben
Tegyük fel például, hogy van egy input.txt nevű fájl a következő tartalommal.
This is a line of text inside the file.
Próbáljuk meg elolvasni ezt a fájlt a 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(); ) ) )
Kimenet
Adatok a folyamban: Ez egy szövegsor a fájl belsejében.
A fenti példában létrehoztunk egy bemeneti adatfolyam-olvasót a fájl bemeneti adatfolyam segítségével. A bemeneti adatfolyam-olvasó össze van kapcsolva az input.txt fájllal .
FileInputStream file = new FileInputStream("input.txt"); InputStreamReader input = new InputStreamReader(file);
A fájlból a karakterek kiolvasásához a read()
módszert használtuk .
getEncoding () metódus
A getEncoding()
módszer felhasználható arra, hogy megkapja a kódolás típusát, amelyet az adatok tárolására használnak a bemeneti adatfolyamban. Például,
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(); ) ) )
Kimenet
Az input1 karakterkódolása: Cp1252 Az input2 karakterkódolása: UTF8
A fenti példában létrehoztunk 2 input1 és input2 nevű bemeneti adatfolyam-olvasót.
- Az input1 nem adja meg a karakterkódolást. Ezért a
getEncoding()
metódus az alapértelmezett karakterkódolás kanonikus nevét adja vissza. - Az input2 adja meg az UTF8 karakterkódolást . Ezért a
getEncoding()
metódus visszaadja a megadott karakterkódolást.
Megjegyzés : A Charset.forName()
karakterkódolás típusának meghatározásához a módszert használtuk . További információkért látogasson el a Java Charset (hivatalos Java dokumentáció) oldalra.
bezár () módszer
Az input stream olvasó bezárásához használhatjuk a close()
módszert. A close()
módszer meghívása után nem használhatjuk az olvasót az adatok kiolvasására.
Az InputStreamReader egyéb módszerei
Módszer | Leírás |
---|---|
ready() | ellenőrzi, hogy az adatfolyam kész-e olvasásra |
mark() | jelölje meg azt a pozíciót a patakban, amelyre az adatokat beolvasták |
reset() | visszaadja a vezérlést a patak azon pontjára, ahol a jelölést beállították |
További információkért látogasson el a Java InputStreamReader oldalra (hivatalos Java dokumentáció).