Bu eğitimde, örnekler yardımıyla Java InputStreamReader ve yöntemlerini öğreneceğiz.
InputStreamReader
Sınıf java.io
paketinde karakter veri içine bayt veri dönüştürmek için kullanılabilir.
Soyut sınıfı genişletir Reader
.
InputStreamReader
Sı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, InputStreamReader
giriş 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.InputStreamReader
paketi 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 InputStreamReader
ile 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, Charset
dosyadaki karakter kodlamasını belirtmek için sınıfı kullandık .
InputStreamReader Yöntemleri
InputStreamReader
Sınıf, farklı yöntemler için uygulamalar içinde mevcut içerir Reader
sınıfı.
read () Yöntem
read()
- okuyucudan tek bir karakter okurread(char() array)
- okuyucudan karakterleri okur ve belirtilen dizide depolarread(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.