Java Dosya İşlemleri(Dosya Oluşturma, Dosya Silme, Dosyadan Veri Okuma, Dosyaya Veri Yazma)

Merhaba arkadaşlar. Bugün dersimizde dosya işlemlerinden bahsedeceğiz.

Bu derste öğreneceklerimiz:

  • Dosya Oluşturma
  • Dosya Silme
  • Dosyadan Veri Okuma
  • Dosyaya Veri Yazma
  • Scanner sınıfı ile okuma

Öncelikle Dosya Oluşturma işlemini görelim. Bunun için aşağıdaki komutları yazıyoruz. Ne anlama geldiğini de komutların yanlarına yazdım.

	public static void DosyaOlustur(String URL){
		File f = new File(URL); //  yol belirtmeyip sadece dosya ismi belirttiğimiz zaman otomatik olarak bulunduğu klasöre göre işlem yapar.
					// yani burada benim bilgisayara göre ; C:\Users\Buyukaptan\workspace\DosyaIslemleri konumuna göre işlem yapar.(Yol belirtmezsek)
		try {
			if(!f.exists()){ // eğer dosya yoksa
				f.createNewFile(); // dosyamızı oluşturur.
				System.out.println(f.getName()+ " adlı dosya Oluşturuldu..");
			}else{
				System.out.println("Dosya olduğundan oluşturma işlemi yapılmayacaktır. ");
			}
		} catch (IOException e) { // hata yakalama
			// TODO: handle exception
			e.printStackTrace();
		}
	}

Üstteki fonksiyonu main metot da aşağıdaki şekilde çağırdığımızda;

package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

public class MainPage {
	public static void main(String[] args) {
		DosyaIslemleri.DosyaOlustur("deneme.txt"); // URL vermeden çağırdığımız da
	}
}

file2

Dosya Okuma

Gördüğünüz üzere projenin çalıştığı konumda dosyamızı oluşturdu. Eğer yol verseydik verdiğimiz yere dosya oluşturacaktı.

Şimdi dosya silme işlemi için aşağıdaki metodu yazalım.

	public static void DosyaSil(String URL){
		File f = new File(URL); // yol belirtmeyip sadece dosya ismi belirttiğimiz zaman otomatik olarak bulunduğu klasöre göre işlem yapar.

		if(!f.exists()){ // eğer dosya yoksa
			System.out.println("Dosya bulunamadığından silinemedi");
		}else{
			f.delete(); // eğer dosyamız varsa.. // silme işlemi gerçekleştirir.
			System.out.println(f.getName() +" adlı dosya başarılı bir şekilde silinmiştir.");
		}
	}

Main metotda aşağıdaki gibi çağırdığımız zaman;

package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

public class MainPage {
	public static void main(String[] args) {
		DosyaIslemleri.DosyaSil("deneme.txt");
	}
}

Konsolda aşağıdaki sonucu görürüz.
file3

Şimdi dosya okuma işlemimizi yapalım. Bunun için aşağıdaki komutları yazmadan önce. deneme.txt adlı dosyamıza aşağıdaki metini ekledim.
file4

Ve aşağıdaki komutları yazıp main metot da çağırıyorum.

	public static void DosyaOku(String URL){
		File file = new File(URL);

		try {
			FileInputStream fis = new FileInputStream(file); // dosya okumak için çağırıyoruz
			int dosyaBoyutu = (int) file.length(); // txt uzantılı dosyalar da her karakter 1 byte yer kaplar
												   // bu yüzden uzunluğu alarak metnin uzunluğunu da bulmuş oluyoruz
			System.out.println("Dosya uzunluğu : "+ dosyaBoyutu); // ekrana dosya uzunluğunu yazdırıyoruz.
			for (int i = 0; i < dosyaBoyutu; i++) { // dosyamızın her karakterini okuyoruz.
				System.out.print((char)fis.read()); // ekrana yazdırıyoruz.
			}
			fis.close(); // dosya okuma işlemimiz bittikten sonra kapatıyoruz.
		} catch (FileNotFoundException e) {
			// TODO: handle exception
			System.out.println("Dosya Bulunamadı..");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

main methot

package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

public class MainPage {
	public static void main(String[] args) {
		DosyaIslemleri.DosyaOku("deneme.txt");
	}
}

Sonuç :
file5

Türkçe ı harfini okumada gördüğünüz gibi sıkıntı yaşadık.

Şimdi dosyaya veri yazma metodumuzu görelim.

	public static void DosyaYazma(String URL){
		File file = new File(URL); // hangi dosya üzerinde işlem yapacağımızı seçiyoruz.
			try {
				// Dosyaya yazmak için nesnemizi oluşturuyoruz.
				FileOutputStream fos = new FileOutputStream(file);
				// Ekleyeceğimiz yazıyı yazıyoruz.
				String yazi = "Bu benim ekleyeceğim ilk yazıdır. \nBuda aşağı satıra yazılacak";
				//Yazma işlemini gerçekleştiriyoruz.
				fos.write(yazi.getBytes());
				fos.flush();
				// İşlemimiz bitince kaynaklarımızı kapatıyoruz. Boşuna sistemde hazır beklemesinler.
				fos.close();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

Main metodumuz :

public class MainPage {
	public static void main(String[] args) {
		DosyaIslemleri.DosyaYazma("deneme.txt");
	}
}

Sonuç :
file6

Gördüğünüz gibi satır atlatmamış olarak gözüküyor. Fakat dosyayı okurken sanki satır atlamış gibi okuyor. Şimdi bu örneğimizi yapalım.
Bildiğiniz gibi scanner sınıfını klavyeden birşeyler girerken kullanabiliyoruz. Fakat dosya işlemlerinde, string okuma işlemlerinde de rahatlıkla kullanabiliriz. Şimdi Dosyadan veri okuma işlemine alternatif olan fonksiyonumuzu görelim.

	public static void DosyaOkumaWithScanner(String dosyaUrl){
		File file = new File(dosyaUrl);
		try {

			Scanner scanner = new Scanner(file);
//			while(scanner.hasNext()){ // kelime kelime okur. boşluklar silinir.
//				System.out.print(scanner.next());
//			}

			while(scanner.hasNextLine()){
				System.out.println(scanner.nextLine()); // satır satır okur
			}

			scanner.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("Dosya Bulunamadı..");
		}

	}

Şimdi main metodumuzu yazalım ver çalıştıralım.

package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

public class MainPage {
	public static void main(String[] args) {
		DosyaIslemleri.DosyaOkumaWithScanner("deneme.txt");
	}
}

Sonuç :
file7

Gördüğünüz gibi satır atlatma işlemimizi uyguladı.

Bu dersimizi indirmek istiyorsanız.(Kaynak Dosyalar)
[wpdm_file id=9]

Ali Demirci

1991 Ankara doğumluyum. Bilgisayar Mühendisliği bölümü 2013 mezunuyum. Bakanlığın bir kurumunda, Sistem(Linux, Windows Server) üzerine çalışmaktayım. Fakat boş zamanlarımda, kendimi yazılım konusunda da geliştirmekteyim. 20'ye yakın Android programım vardır. Her türlü soru(n)larınızda iletişime geçmekten çekinmeyin.

Java Dosya İşlemleri(Dosya Oluşturma, Dosya Silme, Dosyadan Veri Okuma, Dosyaya Veri Yazma)” için 20 yorum

  • 12 Şubat, 2014 tarihinde, saat 03:28
    Permalink

    Çok güzel bilgiler. Teşekkür ederim yardımlarınız için:)

    Yanıtla
  • Geri bildirim: Java Dosya Okuma | İbrahim Demir Kişisel Blog

  • 28 Mart, 2016 tarihinde, saat 04:55
    Permalink

    Abi bende bilgisayar mühendisliği okuyorum 1.sınıfım şuan, okulda java görüyorum, ilerisi için ne yapmalıyım neye yoğunlaşmalıyım bi tavsiyen var mı?

    Yanıtla
    • 2 Nisan, 2016 tarihinde, saat 13:02
      Permalink

      Java görüyorsan, android senin için güzel bir tercih olacaktır. Öncelikle algoritma mantığını geliştir, nesneye dayalı programlamanın mantığını kavramaya çalış. Zaten kod kısmı bundan sonra en basit yerdir.

      Yanıtla
      • 18 Mart, 2017 tarihinde, saat 20:58
        Permalink

        Merabalar javada dosya icerisindeki wav uzantili muziyi play etmek istiyorum ettikten sonra beyenilen muziyi secip dosyaya layit gondermek icin nasil bir yol izleyebilirm…

        Yanıtla
  • 29 Mart, 2016 tarihinde, saat 13:22
    Permalink

    hocam proje klasörüne atılan dosyalar projeyi derlediğimizde dist klasörünün altına gitmiyor. projede kullanacağımız txt,ini dosyalarını nereye koymalıyız diğer ide lerde exe-nin konumuna göre yapılıyor javada nasıl oluyor.
    teşekkürler.
    not:bir kaç konuda ders istegim var kabul edersniz?

    Yanıtla
  • 26 Haziran, 2016 tarihinde, saat 22:02
    Permalink

    merhabalar
    benim mevcut bir .txt dosyam var ve java programım ile sürekli bu txt dosyasında istediğim satırlarda değişiklik yapmak istiyorum. örneğin txt dosyası şu şekilde olsun
    su 0,50 tl
    ekmek 1,00 tl
    yağ 6,00 tl
    ve ekmeğin fiyatını değiştirmek istiyorum 1,25 yapmak istiyorum geri kalan tüm metinler yerinde kalacak şekilde. yardımcı olursanız sevinirim

    Yanıtla
    • 27 Haziran, 2016 tarihinde, saat 01:00
      Permalink

      bu biraz sıkıntılı. Metin içi arama yaparak yapabilirsiniz. Öncelikle metin içindeki yazıları String yazı diye bir değişkene kopyalayın. Öyle bir fonksiyon yazın ki, bu dediğiniz işlem yapılabilsin. Bunun da algoritmasını düşünmek lazım. Bana mail yoluyla ulaşırsanız, yardımcı olabilirim.

      Yanıtla
      • 27 Haziran, 2016 tarihinde, saat 01:13
        Permalink

        öncelikle ilgi için teşekkür ederim
        mail adresinizi bulamadım. benim algoritma ile ilgili sıkıntım yok onu hallediyorum for ile satır satır okuyup diziye aktarıyorum dizide ekmek fiyatını 1,25 yapıyorum fakat bunu txt dosyasında güncelleyemiyorum. önce excelde kaydediyordum verileri fakat hem boyut arttı hemde excel program donduğunda bozuluyordu veriler gidiyordu. ama kullanımı kolaydı tek sütünda ilerliyordum yine ve fiyat değişikliği yaparken önce ekmeğin bulunduğu satırı tespit edip daha sonra
        örnek veriyorum yaz(0,i,”ekmek 1,25 tl” ) şeklinde yazdırıyordum ve i. ni satırdaki eski veriyi silip üstüne yenisini yazdırıyordu bana gerekli olan tam olarak bu

        Yanıtla
        • 27 Haziran, 2016 tarihinde, saat 01:20
          Permalink

          aslında bi yolu var bütün metni diziye aktarıp sonra değişikliği dizide halledip bütün olarak texte aktarırsam sorunum çözülür ama benim text dosyası 13bin satırdan oluşuyor gereksiz yere programı yavaşlatmış olurum. bana örnek bir kod olarak sadece yukarıda verdiğim text dosyasını çözerseniz sevinirim. algoritma geliştirmenize gerek yok sadece 2. satırı silip yerine başka bir metin yazın gerisini ben hallederim :)) fakat 1. ve 3. satırları kullanmadan yani sadece 2. satırı değiştirmenin bi yolu lazım bana 🙂

          Yanıtla
      • 27 Şubat, 2017 tarihinde, saat 19:19
        Permalink

        iyi günler bir ödevim var sıkıntı yaşıyorum yardımcı olurmusunuz

        Yanıtla
    • 22 Kasım, 2016 tarihinde, saat 00:15
      Permalink

      Sadece fiyatları farklı bir değişkende tutarsan degistirmek istedigin alanı bulmana gerek kalmaz ornegin
      ekmek fiyatını string ef=”1,25″; olarak tutsan sonra istedigin zaman
      ef=”2″; şeklinde yeni deger girersen istedigin zaman update yapabilirsin.

      Yanıtla
  • 17 Kasım, 2016 tarihinde, saat 04:02
    Permalink

    Merhaba,
    Bir sorum olacak, Java’da yazdığım bir programda ,içinde mevcut bilgiler olan bir text dosyasında istediğim satırı güncellemek istiyorum nasıl yapabilirim? Yardımcı olursanız sevinirim.

    Yanıtla
  • 22 Kasım, 2016 tarihinde, saat 00:10
    Permalink

    Emeğine sağlık kardeşim çok güzel bir anlatım , çok teşekkürler.

    Yanıtla
  • 18 Mart, 2017 tarihinde, saat 22:09
    Permalink

    kayıtlar.txt bir metin dosyası oluşturarak 1 den 100 e kadar sayılar ı döngü oluşturarak yazan program ? yardımcı olursanız sevinirim 🙂

    Yanıtla
    • 4 Nisan, 2017 tarihinde, saat 20:26
      Permalink

      Valla hocam, hazıra konmak olur yazarsam. Size balık tutmayı öğretsem bence daha iyi olur. File sınıfını kullanarak metin dosyası oluşturabilirsiniz. İnternette örneği var. Bu sitede de var. For döngüsü ile kolayca yazdırabilirsiniz.

      Yanıtla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir