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]
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");
}
}
Konsolda aşağıdaki sonucu görürüz.
Ş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.
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]
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]
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.
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]
Gördüğünüz gibi satır atlatma işlemimizi uyguladı.
Bu dersimizi indirmek istiyorsanız.(Kaynak Dosyalar)
[wpdm_file id=9]
Çok güzel bilgiler. Teşekkür ederim yardımlarınız için:)
Teşekürler İşime çok yaradı
teşekkürler Muhammed bey
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.
çok sağolun
Merabalar javada dosya icerisindeki wav uzantili muziyi play etmek istiyorum ettikten sonra beyenilen muziyi secip dosyaya layit gondermek icin nasil bir yol izleyebilirm…
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
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.
ö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
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 🙂
iyi günler bir ödevim var sıkıntı yaşıyorum yardımcı olurmusunuz
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.
notepad++ ile yapabilirsiniz
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.
Emeğine sağlık kardeşim çok güzel bir anlatım , çok teşekkürler.
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.
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…
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.
oluşturduğum bir dosyayı java kodu içersinde iki boyutlu bir diziye nasıl aktarabilirim