Thursday, September 30, 2010

java.util.Scanner and java.util.Formatter

java.util.Scanner

Bilindiği gibi Scanner, bir veri kaynağından alınan verileri okumak için kullanılan oldukça gelişmiş bir Java sınıfıdır. Scanner, konsol üzerinden kullanıcıdan veri almanın yanında, herhangi bir dosya ile de çalışabilir. Sonuçta konsol ve dosya da birer veri kaynağıdır. Yapmamız gereken tek şey, Scanner nesnesini oluştururken dosya sistemi ile çalışacağımızı belirten uygun yapılandırıcıya (constructor) uygun nesneleri geçirmektir.

Scanner input = new Scanner(System.in);

Scanner input = new Scanner(new BufferedReader(new FileReader("c:\\e-mail.txt"))); 

java.util.Formatter 

Formatter sınıfı da, Scanner gibi benzer işlevler için tasarlanmıştır. Uygulama içerisindeki biçimlendirilmiş bir veriyi herhangi bir veri kaynağına yazdırmak için Formatter sınıfı kullanılabilir. Yine Formatter nesnesini oluştururken, hedef kaynağı bir dosya ile ilişkilendiren Java nesnesini parametre olarak geçirerek, dosya yazma işlemini tamamlayabiliriz.

Formatter output = new Formatter(new BufferedWriter(new FileWriter("c:\\e-mail.txt")));   

Simdi tanimi yaptigimiz bu iki sinif ile ilgili bir uygulama yapalim Asagidaki uygulamayi isterseniz platformda derleyip veriyi platformun consol'undanda ekleyebilirsiniz istersenizde cmd ile derlyip cmd consolu ilede ekleyebilirsiniz 

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Formatter;
import java.util.Scanner;

public class ScannerAndFormatterDemo {
       public static void main(String args[]){
            try {
// Consol'dan veri girmek icin Scanner sinfindan faydalanarak asagidaki islemleri yaptik
                    StringBuffer veri = new StringBuffer();
                    Scanner oku = new Scanner(System.in);
                    System.out.println("-------- Ogrenci Kaydi ---------");
                    System.out.println();
                    System.out.print("Isim : ");
                    veri.append(oku.next());
                    System.out.print("Soyad : ");
                    veri.append("\n" + oku.next());
                    System.out.print("Yas : ");
                    veri.append("\n" + oku.nextInt());
                    System.out.print("Bolum : ");
                    veri.append("\n" + oku.next());
                    System.out.print("Telefon : ");
                    veri.append("\n" + oku.next());
                    System.out.print("E-mail : ");
                    veri.append("\n" + oku.next());
// Yukarda Konsola girilen veriler su sekilde istenilen yere yazilmali
                    File yer = new File("c:\\OgrenciKaydi.txt");
                    Formatter yaz = new Formatter(new BufferedWriter(new FileWriter(yer, true)));
                    yaz.format("%s%n" , veri);
                    yaz.close();
// Yukarida Scanner sinifini kullanarak consola girilen veriyi okuduk simdi ise OgrenciKaydi.txt okuyalim
                   Scanner txtOku = new Scanner(yer);
                   while(txtOku.hasNext()){
                            System.out.println(txtOku.nextLine());
                   }
           } catch (Exception ex) {
                   ex.printStackTrace();
           }
     }
}



Bu konuyu yazarken tanilari Asagidaki siteden aldim Bu blogtaki yaziyida okumanizi oneririm
http://www.javablog.org/54-java-scanner-ve-formatter-siniflari-ile-dosya-islemleri 

No comments:

Post a Comment