Java InputStreamReader (ar piemēriem)

Šajā apmācībā mēs uzzināsim par Java InputStreamReader un tā metodēm ar piemēru palīdzību.

InputStreamReaderNo klases java.iopaketē var izmantot, lai pārveidotu datus baitos vērā datus rakstzīmes.

Tas paplašina abstrakto klasi Reader.

InputStreamReaderKlasē strādā ar citiem ievades plūsmām. Tas ir arī pazīstams kā tilts starp baitu straumēm un rakstzīmju straumēm. Tas ir tāpēc, ka InputStreamReaderievades straumē baiti tiek nolasīti kā rakstzīmes.

Piemēram, dažām rakstzīmēm krātuvē bija jāglabā 2 baiti. Lai lasītu šādus datus, mēs varam izmantot ievades plūsmas lasītāju, kas kopā nolasa 2 baitus un pārveido par atbilstošo rakstzīmi.

Izveidojiet InputStreamReader

Lai izveidotu InputStreamReader, mums vispirms ir jāimportē java.io.InputStreamReaderpakete. Kad mēs importēsim pakotni, mēs varēsim izveidot ievades straumes lasītāju.

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

Iepriekš minētajā piemērā mēs esam izveidojuši InputStreamReadernosauktu ievadi kopā ar FileInputStreamnosaukto failu.

Šeit failā esošie dati tiek saglabāti, izmantojot kādu noklusējuma rakstzīmju kodējumu.

Tomēr failā mēs varam norādīt arī rakstzīmju kodēšanas veidu ( UTF8 vai UTF16 ).

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

Šeit mēs izmantojām Charsetklasi, lai norādītu rakstzīmju kodējumu failā.

InputStreamReader metodes

InputStreamReaderKlase nodrošina implementācijas dažādām metodēm prezentēt šajā Readerklasē.

lasīt () Metode

  • read() - no lasītāja nolasa vienu rakstzīmi
  • read(char() array) - nolasa rakstzīmes no lasītāja un saglabā norādītajā masīvā
  • read(char() array, int start, int length) - nolasa no lasītāja rakstzīmju skaitu, kas vienāds ar garumu, un glabā norādītajā masīvā, sākot no sākuma

Piemēram, pieņemsim, ka mums ir fails ar nosaukumu input.txt ar šādu saturu.

 This is a line of text inside the file. 

Mēģināsim lasīt šo failu, izmantojot 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(); ) ) ) 

Rezultāts

 Dati straumē: šī ir teksta rindiņa faila iekšpusē. 

Iepriekš minētajā piemērā mēs esam izveidojuši ievades straumes lasītāju, izmantojot faila ievades straumi. Ievades straumes lasītājs ir saistīts ar failu input.txt .

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

Lai lasītu rakstzīmes no faila, mēs izmantojām read()metodi.

getEncoding () metode

getEncoding()Metodi var izmantot, lai iegūtu kodēšanas tipu, kas tiek izmantota, lai uzglabātu datus ievades plūsmā. Piemēram,

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

Rezultāts

 Input1: Cp1252 rakstzīmju kodējums: input2: UTF8 

Iepriekš minētajā piemērā mēs esam izveidojuši 2 ievades straumes lasītājus ar nosaukumu input1 un input2.

  • input1 nenorāda rakstzīmju kodējumu. Tādējādi getEncoding()metode atgriež noklusējuma rakstzīmju kodēšanas kanonisko nosaukumu.
  • input2 norāda rakstzīmju kodējumu UTF8 . Tādējādi getEncoding()metode atgriež norādīto rakstzīmju kodējumu.

Piezīme . Mēs izmantojām Charset.forName()metodi, lai norādītu rakstzīmju kodēšanas veidu. Lai uzzinātu vairāk, apmeklējiet Java Charset (oficiālā Java dokumentācija).

aizvērt () metode

Lai aizvērtu ievades straumes lasītāju, mēs varam izmantot close()metodi. Kad close()metode ir izsaukta, mēs nevaram izmantot lasītāju datu lasīšanai.

Citas InputStreamReader metodes

Metode Apraksts
ready() pārbauda, ​​vai straume ir gatava lasīšanai
mark() atzīmējiet straumē pozīciju, līdz kurai dati ir nolasīti
reset() atgriež vadību straumes vietā, kur tika iestatīta atzīme

Lai uzzinātu vairāk, apmeklējiet Java InputStreamReader (oficiālā Java dokumentācija).

Interesanti raksti...