I denna handledning lär vi oss om Java InputStreamReader och dess metoder med hjälp av exempel.
Paketets InputStreamReader
klass java.io
kan användas för att konvertera data i byte till data i tecken.
Det utvidgar den abstrakta klassen Reader
.
Den InputStreamReader
klass 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 InputStreamReader
lä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 InputStreamReader
måste vi först importera java.io.InputStreamReader
paketet. 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 InputStreamReader
namngiven ingång tillsammans med den FileInputStream
namngivna 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 Charset
klassen för att specificera teckenkodningen i filen.
Metoder för InputStreamReader
Den InputStreamReader
klass erbjuder implementeringar för olika metoder att presentera i Reader
klassen.
läs () Metod
read()
- läser en enda karaktär från läsarenread(char() array)
- läser karaktärerna från läsaren och lagras i den angivna matrisenread(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).