Bil 211 dersinin ödevlerinde sıkça dosya kaydetme ve dosya okuma işlemlerinin kullanılması gerekiyordu. 3 class için 3 farklı LinkedList olduğundan (koddaki LinkedListler ArrayList ile değiştirilirse de çalışır) 3 kere de ayrı ayrı kaydetme ve okuma metotları yazmıştım. İkinci ödevi yaparken aklımdan ortak bir kod yazmayı geçirdim ancak nasıl üstesinden geleceğim konusunda bir çözüm bulamamıştım. Enes ile proje için kod yazarken ortak bir dosya kayıt ve dosya okuma metodu fikrimi söyleyince generic olarak bir metot yazılabileceğini önerdi. O gün birlikte de buna benzer bir class yazdık, tabii o kodun üstüne farklı geliştirmeler yapıldı. O yüzden ben ayrı olarak hem ödevlerde hem de projede kullanılabilecek bir class örneği hazırladım. Sabahın köründe hazırladığım için kodumdan pek memnun değilim ancak yine de gerekli işlevi görecektir.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.LinkedList;
/**
* @author Onur Baykal
*/
public class DosyaIslemleri {
/**
*
* @param <E> LinkedList türü
* @param liste Kaydedilmek istenen LinkedList list, türü önemli değil
* @param dosyaAdi Kaydedilecek olan dosyanın adı
*/
public <E> void listeKaydet(LinkedList<E> liste, String dosyaAdi){
try{
FileOutputStream fos = new FileOutputStream(dosyaAdi);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(liste);
oos.close();
fos.close();
}catch(Exception e){
}
}
/**
* Bu method daha önce yaratılmış bir LinkedList'in içinin doldurulmasına
* yarar. Yüklenecek olan listenin türünü belirlemek için parametre olarak
* liste alır.
* @param <E> LinkedList türü
* @param liste Üzerine yükleme yapılacak olan liste,
* @param dosyaAdi İçerisinden liste yüklecek olan dosyanın adı
* @return Üzerine kayıtlı olan liste yüklenmiş olan liste geri döndürülür
*/
public <E> LinkedList<E> listeYukle(LinkedList<E> liste,String dosyaAdi){
try{
FileInputStream fis = new FileInputStream(dosyaAdi);
ObjectInputStream ois = new ObjectInputStream(fis);
liste = (LinkedList<E>)ois.readObject();
ois.close();
fis.close();
}catch(Exception e){
}
return liste;
}
}
Tobb Etü’de yeni bir dönem başladı. Hatta başlayalı baya oldu. 5. haftaya girdik. 6. hafta (gelecek hafta) vizeler başlıyor ve kimi üniversiteler daha eğitime başlamadı. Çalışıyoruz gördüğünüz gibi. Bu dönem Bil211 kodlu dersi alıyorum. Nesnesel Tasarım ve Programlama (yabancı dilde eğitim alanlar için Object Oriented Design & Programming) yani. Geçen sene 2. dönem (bizim okul 3 dönem, 2. sınıftan itibaren bir dönem staja gönderiyor) Java’ya temel bir giriş yapmıştık. Fakat GUI namına bir şey görmemiştik. Bu derste ise nesnesel programlanın inceliklerini öğreniyoruz. Hocamız da ödev olarak GUI’li bir program verdi. Açıkçası kimileri tartışabilir öğretmediği şeyi istiyor diye, açık konuşmak gerekirse başta bende böyle düşünüyordum ama bu lafı söyleyenin ödevi yapmaya başlamayan birinin olduğunu anladım. İnternet gerçekten bir deniz, aradığınız her şeyi buluyorsunuz. İş gerçekten sizin ne kadar bilgiye aç olduğunuza bakıyor. Uzun lafın kısası ödev