Java

Java – Dosyalama İşlemleriyle Basit Rehber Uygulaması

JAVA 05 Aralık 2017 0 Yorum

Merhaba arkadaşlar.. Bu yazımızda javada dosyalama işlemleri kavramamız için basit bir rehber uygulaması yapacağız. Uygulamamız iki classtan oluşacaktır. İlk classımız da main fonksiyonu […]

Merhaba arkadaşlar..

Bu yazımızda javada dosyalama işlemleri kavramamız için basit bir rehber uygulaması yapacağız. Uygulamamız iki classtan oluşacaktır. İlk classımız da main fonksiyonu bulunacak ve diğer classımıza veri gönderip veri alıp işlem gerçekleştireceğiz..O yüzden ilk önce rehber classımızın kodlarını methodlar şeklinde paylaşayım. 

rehber classı – kisiEkle metodu

Bu metodumuzda açıklanacak çok birşey yok. FileWriter ile dosyayla olan bağlantımızı yapıp metoda gelen verileri .write() metoduyla dosyamıza yapıp dosyayı kapatıyoruz. FileWriter da dosya adresinden sonra verdiğimiz 2. parametre olan true değeri dosyayı append modunda açmamızı yani dosyaya yazdığımız verileri dosyanın sonuna eklememizi sağlıyor.

public void kisiEkle(String adSoyad, String numara) {
	try{
		FileWriter dosyaYaz = new FileWriter("E:\\rehber.txt",true);
		dosyaYaz.write(adSoyad+"|"+numara+"\n");
		dosyaYaz.close();
	}catch(Exception ex){

	}
}

rehber classı – kisiSil metodu

kisiSil metodumuz bir parametre alıyor ve bu silinecek olan satırın kaçıncı satır olduğu. Kodların açıklamasını yanlarında açıklama satırı olarak vermeyi daha uygun gördüm. Buradaki mantık rehberi normal şekilde okuyup sileceğimiz satıra geldiğimizde o satırı atlayıp tekrar dosyaya yazmak.

public void kisiSil(int satirNo) {
	try{		
		FileReader dosyaOku = new FileReader("E:\\rehber.txt");
		int satir = 1; // Hangi satırı sileceğimizi bu sayaç ile kontrol edeceğiz
		String rehber = ""; // Silme işlemini yaparken silinecek satır hariç kalanı tekrar dosyaya yazmak için burda saklıyoruz
		String satirMesaj = ""; // O anki gelen aynı satırdaki karekterleri geçici olarak burada saklıyoruz
		while(dosyaOku.ready()){ // Dosyanın sonuna gelip gelmediğimizi kontrol ediyor
			char gelen = (char)dosyaOku.read(); // Dosyayı satır satır okuyoruz
			satirMesaj += gelen; // Her gelen karekteri geçici satır değişkenimizde tutuyoruz

			if(satir == satirNo){ // Silinecek satırımız ile sayaçımız aynı mı diye kontrol ediyoruz
				satirMesaj = ""; // O satırı atlayacağımız için geçici satır değişkenini temizliyoruz
				if(gelen == '\n') // O satırın sonuna geldik mi diye kontrol ediyoruz
					satir++; // Satır sayaçımızı artırıyoruz
				continue; // Aşağıdaki işlemleri yapmaması için döngüden o anlık çıkıyoruz
			}

			if(gelen == '\n'){ // O satırın sonuna gelip gelmediğimizi kontrol ediyoruz
				rehber += satirMesaj; // Rehber değişkenine o anki satırı ekliyoruz
				satir++; // Satırı artırıp yolumuza devam ediyoruz 
				satirMesaj=""; // Geçici satır değişkenini temizliyoruz
			}
		}
		dosyaOku.close();
		FileWriter dosyaYaz = new FileWriter("E:\\rehber.txt");
		dosyaYaz.write(rehber); // Rehber değişkenini tekrar dosyaya yazıyoruz böylece belirtilen satır silinmiş oluyor
		dosyaYaz.close();

	}catch(Exception ex){
		System.out.println(ex);
	}
}

rehber classı – kisiDuzenle metodu

kisiDuzenle metodumuz 3 parametre alıyor. İlk parametresi kisiSil metodunda olduğu gibi hangi satırın düzenleneceğini tutuyor. Diğer iki parametre ise o satırın yeni değerleri. kisiDuzenle metodumuz da neredeyse kisiSil metoduyla aynı olduğundan kodları açıklamayak yerine farklarını söyleyim. Silme işlemi yaparken geçici satirMesaj değişkenimizi temizliyorduk bunda ise temizleyip yeni gelen verileri tutuyoruz orda. 

public void kisiDuzenle(int satirNo, String adSoyad, String numara){
	try{	
		FileReader dosyaOku = new FileReader("E:\\rehber.txt");
		int satir = 1;
		String rehber = "";
		String satirMesaj = "";
		while(dosyaOku.ready()){
			char gelen = (char)dosyaOku.read();
			satirMesaj += gelen;

			if(satir == satirNo){
				satirMesaj = "";
				if(gelen == '\n'){
					satirMesaj = adSoyad+"|"+numara+"\n";
					satir++;
				}
			}

			if(gelen == '\n'){
				rehber += satirMesaj;
				satir++;
				satirMesaj="";
			}
		}
		dosyaOku.close();
		FileWriter dosyaYaz = new FileWriter("E:\\rehber.txt");
		dosyaYaz.write(rehber);
		dosyaYaz.close();

	}catch(Exception ex){
		System.out.println(ex);
	}
}

 rehber classı – rehberOku metodu

Bu metodda da anlatılacak çok birşey yok dosyayı satır satır ekrana basıyor o kadar 🙂 Ben eklerken | karekteriyle birleştirmiştim ad soyad ve telefon verisini siz okurken satır satır okursanız bölüp işlemler gerçekleştirebilirsiniz üzerinde.

public void rehberOku() {
	try{
		FileReader dosyaOku = new FileReader("E:\\rehber.txt");
		while(dosyaOku.ready()) // Dosyanın sonuna gelip gelmedik mi kontrol ediyor
		System.out.print((char)dosyaOku.read()); // Read int değer döndürür char a çevirip ekrana basıyoruz
		dosyaOku.close();
	}catch(Exception ex){

	}
}

Main Classı – main metodu

Bu metodda diğer classımızı çağırıp kullanımı yapıyoruz sadece.

public static void main(String[] args) {
	RehberClass rehber = new RehberClass();
	rehber.kisiEkle("Ad Soyad", "05554443322");
	rehber.kisiEkle("Yeni Kişi", "055556667788");
	rehber.rehberOku();
	System.out.println("------");
	rehber.kisiDuzenle(2, "Düzenlenmiş", "05555555555");
	rehber.rehberOku();
}

Bu yazımızda buraya kadar bir sonraki yazımızda görüşmek üzere..

yorum yap