CharArrayReader java.lang.object java.io.reader java.io.chararrayreader Kılgıladığı Arayüzler: Closeable, AutoCloseable, Readable Bildirimi: public class CharArrayReader extends Reader Karekter giriş akımı tarafından kullanılacak bir karekter buffer ı oluşturur. Java1.1 sürümüyle gelmiştir. Değişkenleri (fields): protected char[] buf The character buffer. protected int count The index of the end of this buffer. protected int markedpos The position of mark in buffer. protected int pos The current buffer position. java.io.reader Sınıfından Kalıtsal Gelen Değişken: lock
Kurucuları: CharArrayReader(char[] buf) Creates a CharArrayReader from the specified array of chars. CharArrayReader(char[] buf, int offset, int length) Creates a CharArrayReader from the specified array of chars. Metotları: void close() Closes the stream and releases any system resources associated with it. void mark(int readaheadlimit) Marks the present position in the stream. boolean marksupported() Tells whether this stream supports the mark() operation, which it does. int read() Reads a single character. int read(char[] b, int off, int len) Reads characters into a portion of an array. boolean ready() Tells whether this stream is ready to be read. void reset() Resets the stream to the most recent mark, or to the beginning if it has never been marked. long skip(long n) Skips characters. java.io.reader Sınıfından Kalıtsal Gelen Metotlar: read, read java.lang.object Sınıfından Kalıtsal Gelen Metotlar: clone, equals, finalize, getclass, hashcode, notify, notifyall, tostring, wait, wait, wait
Aşağıdaki program alfabenin küçük harflerini giriş akımı olarak alıyor ve onu bir array halinde buffera koyuyor. Sonra da onları bir döngü ile ekrana yazıyor. // CharArrayReader. örneği public static void main(string args[]) throws IOException { String tmp = "abcçdefghıijklmnoöpqrsştuüvwxyz"; int length = tmp.length(); char c[] = new char[length]; tmp.getchars(0, length, c, 0); CharArrayReader carrreader1 = new CharArrayReader(c); CharArrayReader carrreader2 = new CharArrayReader(c, 5, 12); int i; System.out.println("carrReader1:"); while ((i = carrreader1.read())!= -1) { System.out.print((char) i); System.out.println(); System.out.println("carrReader2 :"); while ((i = carrreader2.read())!= -1) { System.out.print((char) i); System.out.println(); carrreader1 is: abcçdefghıijklmnoöpqrsştuüvwxyz carrreader2 is: efghıijklmno Açıklamalar: 8.satırdaki deyim bir char arrayi yaratıyor. 9.satır String sınıfının void getchars(int srcbegin, int srcend, char[] dst, int dstbegin) metodunu kullanarak, kaynaktan arraye veri aktarıyor. Bu metod kaynaktaki arrayin srcbegin indisinden başlayıp srcend indisine kadar olan bileşenleri, dst adlı char arrayi üzerine, dstbegin indisinden başlayarak yazıyor. Dolayısıyla, c[] arrayi üzerine bütün alfabe yazılmış oluyor. 10.satırdaki deyim CharArrayReader sınıfına ait carrreader1 nesnesini yaratıyor; yani ana bellekte c arrayini koyacağı carrreader1 nesnesini (buffer arrayi) yaratıyor ve c arrayini oraya kopyalıyor. 11.satır benzer işi, c arrayinin 5 ile 12-inci indisli bileşenleri için yapıyor. 14. ve 19. Satırlardaki while döngüleri, buffera alınan öğeleri ekrana yazıyor.
Aşağıdaki program, buffer da işaret (mark) koyma eylemini gösteriyor. Array okunurken en son okunan karekter işaretleniyor (mark). Okumaya devam etmek için yeniden konuşlandırılıyor (reset); böylece okuma işlemi kaldığı yerden devam ediyor. // CharArrayReader için işaret (mark) örneği public static void main(string[] args) throws IOException { char[] carr = { 'J', 'A', 'V', 'A', 'I', 'N', 'O', 'U', 'T' ; System.out.print("Verilen char array'i : "); for (int i = 0; i < carr.length; i++) { System.out.print(cArr[i]); // CharArrayReader nesnesi yarat. CharArrayReader obj = new CharArrayReader(cArr); // Array'in öğelerini birer birer oku. System.out.println("\nİlk karekter : " + (char) obj.read()); System.out.println("İkinci karekter : " + (char) obj.read()); // İşaret (mark) koy, 0-ıncı öğe atlandı. obj.mark(1); System.out.println("İkinci öğe işaretlendi."); // Array'i okumayı sürdür. System.out.println("Üçüncü öğe : " + (char) obj.read()); System.out.println("Dördüncü öğe : " + (char) obj.read()); System.out.println("Beşinci öğe : " + (char) obj.read()); // CharArrayReader yeniden konumlandır (reset) obj.reset(); // Yeni konumdan ilk karekteri oku. char nextletter = (char) obj.read(); System.out.println("Yeni konumdan okunan ilk karekter: " + nextletter); Verilen char array'i : JAVAINOUT Đlk karekter : J Đkinci karekter : A Đkinci öğe işaretlendi. Üçüncü öğe : V Dördüncü öğe : A Beşinci öğe : I Yeni konumdan okunan ilk karekter: V
public static void main(string[] args) { try { // CharArrayReader nesnesi yarat char[] arr = new char[] { 'M', 'e', 'r', 'h', 'a', 'b', 'a' ; CharArrayReader reader = new CharArrayReader(arr); // Arrayin öğelerini birer birer oku char[] c = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G' ; for (int i = 0; i < 5; i++) { c[i] = (char) reader.read(); System.out.println(c[i]); System.out.println("Buraya işaret konuldu"); // işaret destekleniyorsa, buraya işaret (mark) koy if (reader.marksupported()) { reader.mark('$'); c[5] = (char) reader.read(); c[6] = (char) reader.read(); for (int i = 5; i < 7; i++) { System.out.println(c[i]); // CharArrayReader nesnesini yeniden konuşlandır. reader.reset(); // rest işleminden sonraki ilk okuma. char nextletter = (char) reader.read(); System.out.println("Reset'ten sonra ilk okunan harf : " + nextletter); // CharArrayReader nesnesini kapat reader.close(); catch (IOException ex) { System.out.println(ex.toString()); M e r h a Buraya işaret konuldu b a Reset'ten sonra ilk okunan harf : b