Java InputStreamReader (Örneklerle)

Bu eğitimde, örnekler yardımıyla Java InputStreamReader ve yöntemlerini öğreneceğiz.

InputStreamReaderSınıf java.iopaketinde karakter veri içine bayt veri dönüştürmek için kullanılabilir.

Soyut sınıfı genişletir Reader.

InputStreamReaderSınıf diğer giriş akışları ile çalışır. Bayt akışları ve karakter akışları arasında bir köprü olarak da bilinir. Bunun nedeni, InputStreamReadergiriş akışındaki baytları karakter olarak okur.

Örneğin, bazı karakterlerin depoda saklanması 2 bayt gerektiriyordu. Bu tür verileri okumak için, 2 baytı birlikte okuyan ve karşılık gelen karaktere dönüştüren giriş akışı okuyucusunu kullanabiliriz.

InputStreamReader oluşturun

Bir oluşturmak için InputStreamReaderönce java.io.InputStreamReaderpaketi içe aktarmalıyız . Paketi buraya aktardıktan sonra, giriş akışı okuyucusunu nasıl oluşturabiliriz.

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

Yukarıdaki örnekte, adlandırılmış dosya InputStreamReaderile birlikte adlandırılmış bir girdi oluşturduk FileInputStream.

Burada, dosyadaki veriler bazı varsayılan karakter kodlamaları kullanılarak saklanır.

Bununla birlikte, dosyada karakter kodlama türünü ( UTF8 veya UTF16 ) da belirtebiliriz .

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

Burada, Charsetdosyadaki karakter kodlamasını belirtmek için sınıfı kullandık .

InputStreamReader Yöntemleri

InputStreamReaderSınıf, farklı yöntemler için uygulamalar içinde mevcut içerir Readersınıfı.

read () Yöntem

  • read() - okuyucudan tek bir karakter okur
  • read(char() array) - okuyucudan karakterleri okur ve belirtilen dizide depolar
  • read(char() array, int start, int length) - okuyucudan uzunluğa eşit sayıda karakter okur ve baştan başlayarak belirtilen dizide depolar

Örneğin , aşağıdaki içeriğe sahip input.txt adlı bir dosyamız olduğunu varsayalım .

 This is a line of text inside the file. 

Bu dosyayı kullanarak okumaya çalışalım 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(); ) ) ) 

Çıktı

 Akıştaki veriler: Bu, dosyanın içindeki bir metin satırıdır. 

Yukarıdaki örnekte, dosya girdi akışını kullanarak bir girdi akışı okuyucusu oluşturduk. Giriş akışı okuyucusu, input.txt dosyasıyla bağlantılıdır .

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

Dosyadan karakterleri okumak için read()yöntemi kullandık .

getEncoding () Yöntemi

getEncoding()Yöntem, giriş akımındaki veri depolamak için kullanılan kodlama türü almak için de kullanılabilir. Örneğin,

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

Çıktı

 Giriş1'in karakter kodlaması: Cp1252 Giriş2'nin karakter kodlaması: UTF8 

Yukarıdaki örnekte, input1 ve input2 adında 2 giriş akışı okuyucusu oluşturduk.

  • input1, karakter kodlamasını belirtmez. Dolayısıyla getEncoding()yöntem, varsayılan karakter kodlamasının kanonik adını döndürür.
  • input2, UTF8 karakter kodlamasını belirtir . Dolayısıyla getEncoding()yöntem, belirtilen karakter kodlamasını döndürür.

Not : Charset.forName()Yöntemi karakter kodlamasının türünü belirtmek için kullandık . Daha fazla bilgi edinmek için Java Charset'i (resmi Java belgeleri) ziyaret edin.

close () Yöntem

Giriş akışı okuyucuyu kapatmak için close()yöntemi kullanabiliriz . Bir kez close()yöntemi olarak adlandırılır, veriler okuma okuyucu kullanamaz.

InputStreamReader'ın Diğer Yöntemleri

Yöntem Açıklama
ready() akışın okunmaya hazır olup olmadığını kontrol eder
mark() verinin okunduğu akıştaki konumu işaretleyin
reset() kontrolü akışta işaretin ayarlandığı noktaya döndürür

Daha fazla bilgi edinmek için Java InputStreamReader'ı (resmi Java belgeleri) ziyaret edin.

Ilginç makaleler...