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.

[java] 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();
}
}
[/java]

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

[java] 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
}
}
[/java]

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.

[java] 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.");
}
}
[/java]

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

[java] package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

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

[/java]

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.

[java] 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();
}
}
[/java]

main methot

[java] package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

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

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.

[java] 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();
}
}
[/java]

Main metodumuz :

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

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.

[java] 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ı..");
}

}
[/java]

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

[java] package com.dosya.main;
import com.dosya.islemler.DosyaIslemleri;

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

Sonuç :
file7

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

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

Hakkında Ali Demirci

Ben Ali Demirci... 1991 Ankara doğumluyum. Ankara da yaşıyorum. Fırsat buldukça öğrendiklerimi burada paylaşıyorum. Java ile haşır neşirim. Android'den asla vazgeçemem. Öğrenmeye bayılırım. Yeni şeyler öğrendiğimde, geçmişteki projelerimde keşke böyle yapsaydım diye çok üzülmüşümdür. O yüzden öğrenmekten korkmayın. Takıldığınız yerleri mutlaka sorun. Biliyorsam yanıt veririm. Bilmiyorsam yol gösteririm. Teşekkürler :)

Kontrol Et

İşletim Sistemlerine Giriş

İşletim sistemleri, bilgisayar donanımları ve kullanıcılar arasında iletişim sağlamak amacıyla yazılmış olan programlardır. Bilgisayar Nedir? …

24 Yorumlar

  1. Mehmet

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

  2. Muhammed

    Teşekürler İşime çok yaradı

  3. Gencay Ay

    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ı?

    • 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.

      • Gencay Ay

        çok sağolun

      • Fatih

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

  4. sadık acar

    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?

    • Şu an pc başında yazamıyorum. Bu aralar bakamıyorum pek. Sorunun cevabını bilemiyorum. adresine, mail atarsan yardımcı olmaya çalışırım

  5. semih doğan

    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

    • 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.

      • semih doğan

        ö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

        • semih doğan

          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 🙂

      • esra

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

    • Tunahan

      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.

    • yusuf

      notepad++ ile yapabilirsiniz

  6. Erman EMRE

    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.

  7. Tunahan

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

  8. turan

    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 🙂

    • 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.

  9. ogün

    Merhabalar.Özetle sorum şu java’da Pc’ler arası dosya paylaşımı yapmak istiyorum .Bu web’de sanal host oluşturarak mı olur karşı pc’nin IP adresiylemi olur bilmiyorum araştırdım FTP protokolü ile dosya aktarımı var fakat daha web programlama görmediğim için nasıl olur bimiyorum bilgi verirseniz sevinirim
    İyi günler…

  10. murat

    ali bey şuan java da bir sıkıntım var. matris oluşturup oluşturduğum matris dosyasını nasıl java ya monte edebilirim ve bu dosyam text olarak değilde sayısal veriler içeriyor.

  11. ayşe

    oluşturduğum bir dosyayı java kodu içersinde iki boyutlu bir diziye nasıl aktarabilirim

  1. Geridönüş Java Dosya Okuma | İbrahim Demir Kişisel Blog

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.