Java InputStreamReader (med exempel)

I denna handledning lär vi oss om Java InputStreamReader och dess metoder med hjälp av exempel.

Paketets InputStreamReaderklass java.iokan användas för att konvertera data i byte till data i tecken.

Det utvidgar den abstrakta klassen Reader.

Den InputStreamReaderklass fungerar med andra inmatningsströmmar. Det är också känt som en bro mellan byte-strömmar och karaktärsströmmar. Detta beror på att InputStreamReaderläsbyten från ingångsströmmen som tecken.

Till exempel krävde vissa tecken att 2 byte skulle lagras i lagringen. För att läsa sådan data kan vi använda ingångsströmläsaren som läser de två bytes tillsammans och omvandlas till motsvarande tecken.

Skapa en InputStreamReader

För att skapa ett InputStreamReadermåste vi först importera java.io.InputStreamReaderpaketet. När vi väl har importerat paketet här kan vi skapa ingångsströmläsaren.

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

I exemplet ovan har vi skapat en InputStreamReadernamngiven ingång tillsammans med den FileInputStreamnamngivna filen.

Här lagras data i filen med hjälp av standardteckenkodning.

Vi kan emellertid också specificera typen av teckenkodning ( UTF8 eller UTF16 ) i filen.

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

Här har vi använt Charsetklassen för att specificera teckenkodningen i filen.

Metoder för InputStreamReader

Den InputStreamReaderklass erbjuder implementeringar för olika metoder att presentera i Readerklassen.

läs () Metod

  • read() - läser en enda karaktär från läsaren
  • read(char() array) - läser karaktärerna från läsaren och lagras i den angivna matrisen
  • read(char() array, int start, int length) - läser antalet tecken som är lika långa från läsaren och lagras i den angivna matrisen från början

Antag till exempel att vi har en fil med namnet input.txt med följande innehåll.

 This is a line of text inside the file. 

Låt oss försöka läsa den här filen med 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(); ) ) ) 

Produktion

 Data i strömmen: Det här är en textrad i filen. 

I exemplet ovan har vi skapat en ingångsströmläsare med hjälp av filinmatningsströmmen. Ingångsströmläsaren är länkad till filen input.txt .

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

För att läsa tecken från filen har vi använt read()metoden.

getEncoding () Metod

Den getEncoding()metod kan användas för att få den typ av kodning som används för att lagra data i ingångsströmmen. Till exempel,

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

Produktion

 Teckenkodningen för input1: Cp1252 Teckenkodningen för input2: UTF8 

I exemplet ovan har vi skapat två ingångsströmläsare med namnet input1 och input2.

  • input1 anger inte teckenkodningen. Därför getEncoding()returnerar metoden det kanoniska namnet på standardteckenkodningen.
  • input2 anger teckenkodningen, UTF8 . Därför getEncoding()returnerar metoden den angivna teckenkodningen.

Obs! Vi har använt Charset.forName()metoden för att specificera typen av teckenkodning. För mer information, besök Java Charset (officiell Java-dokumentation).

close () Metod

För att stänga ingångsströmläsaren kan vi använda close()metoden. När close()metoden har anropats kan vi inte använda läsaren för att läsa data.

Andra metoder för InputStreamReader

Metod Beskrivning
ready() kontrollerar om strömmen är redo att läsas
mark() markera positionen i strömmen till vilken data har lästs
reset() returnerar kontrollen till den punkt i strömmen där märket sattes

Om du vill veta mer besöker du Java InputStreamReader (officiell Java-dokumentation).

Intressanta artiklar...