Java InputStreamReader (példákkal)

Ebben az oktatóanyagban példák segítségével megismerhetjük a Java InputStreamReader programot és annak módszereit.

A csomag InputStreamReaderosztálya java.iofelhasználható a bájtban lévő adatok karakterekké alakítására.

Kiterjeszti az absztrakt osztályt Reader.

Az InputStreamReaderosztá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 InputStreamReaderbemeneti 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 InputStreamReaderimportálnunk kell a java.io.InputStreamReadercsomagot. 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 InputStreamReadermegnevezett bemenetet a FileInputStreammegnevezett 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 Charsetosztályt használtuk a fájlban található karakterkódolás megadására.

Az InputStreamReader módszerei

Az InputStreamReaderosztály megvalósításokat biztosít az Readerosztá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ömbben
  • read(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ó).

érdekes cikkek...