|
Dosya işlemleri programlamada kayıtların saklanması bakımından önemli rol oynar. Javada oluşturduğunuz herhangi bir nesneyi yada yazıyı kolaylıkla sabit diskinizin bir köşesinde saklayabilirsiniz. Ve sakladiğiniz nesne yada yazıyı kolaylıkla tekrar okuyabilir, istediğiniz herhangi bir programcıkta kullanabilirsiniz.
Akımlar(Streams)
Dosya işlemlerine başlamadan akımların ne olduğunu görelim. Javada dosya yazmak ve okumak için akımlar oluşturulmuştur. Aslında bu akımı bir yönde akan su akıntısına benzetebiliriz. Zaten ismi de buradan gelmektedir. Fakat javada biz dataları tek yönde akıtacağız. Bu akımlar sayesinde herhangi bir dosyaya bağlanıp, o dosya üzerinde işlemler yapabilirsiniz. Ama akımlar sadece bu işe yaramazlar. Ağ programcılığında da kullanılır. Buna ileriki konularda değineceğiz.
java.io paketi
Bu makalede kullandığımız dosya işlemleri ile ilgili bütün sınıflar bu paket içerisinde yer almaktadır. Bu paket içerisinde yer alan sınıfları bir örnek üzerinde inceleyelim.
|
import java.io.* ; // işlemleri yapacağımız paketimiz
public class FProcess {
public static void main(String args[]) {
try {
File file = new File("MyFile.txt") ; // yeni dosya olustur.
FileWriter fwriter = new FileWriter(file) ;
BufferedWriter bw = new BufferedWriter(fwriter) ;
for(int i=0; i<args.length; i++) {
bw.write(args[i]) ;
}
bw.close() ; //dosya yazma işlemi bittikten sonra dosya kapatılır
} catch(IOException ioexc) {}
}
}
|
Yukarıdaki kod parçasında görüldüğü gibi program çalıştırılırken girilen parametre MyFile.txt isimli bir dosyaya kayıt ediliyor. Bunu biraz inceleyelim...
java.io paketinde bulunan File sınıfı sayesinde bir dosya yaratıyoruz. Böylece elimizde, içine birşeyler yazmak için bir dosyamız oldu. Şimdi de bu dosyaya yazı yazmamız lazım. Bunu ise aynı paket içerisinde bulunan FileWriter sınıfı sayesinde yapiyoruz. Bu sınıf parametre olarak bir dosya alıyor ve parametre olarak verilen dosya üzerine karakterleri teker teker yazıyor. Bu da tabiki programın yavaşlamasına neden olur. O yüzden ben yazıları bufferlayıp yazmayı tercih ettim yani ilk önce yazı bellekte bir alanda toplanıyor sonra direkt dosyaya yazılıyor. Bu da sürekli dosya aç-kapa işlemini azaltıyor. Yazma işlemi bittikten sonra close(kapa) fonksiyonu sayesinde dosyayı kapatıyoruz. Şimdi programımızı derledikten sonra çalıştıralım.
>> java FProcess CSharpnedir.com
...gibi programımızı çalıştırdığımız zaman oluşturduğumuz dosya içine “CSharpnedir.com” yazısının yazıldığını görürsünüz.
Nesne Yazmak
Şimdi de nesne yazmayı görelim. Oluşturduğumuz nesneyi yazmadan önce o nesnenin java.io paketi içerisinde bulanan Serializable arayüzünü(interface) uygumalaması gerekir. Böylece nesne yazilabilir hale gelir. Nesneyi herhangi dosyaya kaydedebilirsiniz veya önceden kayıt edilmis bir nesneyi dosyadan okuyup oluşturabilirsiniz. Bunu bir örnekle inceleyelim.
|
import java.io.* ;
public class Araba implements Serializable {
private int vites ;
private int hiz ;
public Araba(int v, int h) {
hiz = h ;
vites = v ;
}
}
|
Araba isimli bir nesne oluşturduk. Şimdi de bu nesneyi kaydedecek sınıfı yazalım.
|
import java.io.* ;
public class WriteObj {
public static void main(String args[]) {
try {
FileOutputStream fostr = new FileOutputStream("ouputfile");
ObjectOutputStream str = new ObjectOutputStream(fostr);
str.writeObject(new Araba(1,10));
str.close() ;
} catch(IOException ioexc) {}
}
}
|
Görüldüğü gibi önceden yaptığımız işlemlerin hemen hemen aynısı. Sadece burada writeObject fonksiyonunu kullanıyoruz. Ve bu fonksiyonun içine parametre olarak herhangi bir nesne yazıyoruz. Artık nesnemiz kayıt edildi.
Kaynak : csharpnedir.com
|