11 Ekim 2014 Cumartesi

Java İle Dosya İşlemleri (Okuma / Yazma / Ekleme)

Merhaba arkadaşlar,
Bayram, şehir dışı seyahatler , iş yoğunluğu derken uzun zamandır yazamıyordum.  Bu gün sizlere Java ile Dosya işlemleri nasıl yapıldığını paylaşacağım.  Bir aksilik olmazsa eğer[uyku/yorgunluk.. vs :)  ] 1-2  yazı daha yazıp proje/kaynak dosyalarıyla birlikte paylaşıyor olacağım.

Aslında her işlem de olduğu gibi dosya operasyonlarını da Javada birden fazla yöntemlerle yapabilirsiniz ancak ben burada en  bilinen yöntem olan BufferedWriter ve BufferedReader ile dosya  işlemleri yapacağım.

Öncelikle intelliJ aracılığıyla bir consol projesi oluşturalım(Web projesi oluşturarak ta aynı işlemleri yapabilirsiniz). 

Projenin yapısı(Son hali) aşağıdaki gibi olacaktır.



Dosya  işlemleri için Service paketinin altında Operations.java adında bir sınıf oluşturuyoruz.
Bu sınıfın içinde aşağıdaki isimlerde 3 tane metot olacak. 
public static void writeFile(String content) // dosya yazar 
public static void appendFile(String content) // dosyaya içerik ekler(Eski verileri silmeden)
public static void readFile(String path) // dosyadan okur


Operations.java / writeFile

    public static void writeFile(String content) {

        File file = new File("write-file.txt");

        //if file doesn't exists , then create it
        if (!file.exists())
            try {
                file.createNewFile();
            } catch (Exception e) {
                e.printStackTrace();
            }

        try {
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();
            System.out.println("SUCCESS..");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


Yukarıdaki metot dosyaya yazmak istediğiniz her içeriği işlerken, mevcut  dosya içeriğini temizler/ezer(override).  Eğer dosyadaki var olan içeriğe dokunmadan en alta satır eklemek istiyorsanız yapmanız gereken tek işlem var oda FileWriter'a true değerine sahip  ikinci bir parametre göndermek. Bu sayede FileWriter sınıfındaki override işlemi disable olur. Girdiğiniz içerikler ardı ardına eklenir.

Operations.java / appendFile
            FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);

Operations.java / readFile
    public static void readFile(String path) {

        BufferedReader br = null;

        String sCurrentLine;
        String filePath = path;

        try {
            br = new BufferedReader(new FileReader(filePath));
            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println("READ ::::: " + sCurrentLine);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }


Run.java sınıfındaki main metodu çalıştırarak console ekranından işlemlerin sonucunu görebilirsiniz.
controller/Run.java
    public static void main(String[] args) {

        System.out.println("RUNING..");

        //call writer class
        Operations op = new Operations();

        Long currDate = System.currentTimeMillis();
        Date date = new Date(currDate);
        String timeStr = date.toString();

        //content to file  + system time
        String content1 = "ilk satiri dosyaya yaz " + timeStr + "\n";
        String content2 = "ikinci satiri dosyaya yaz " + timeStr + "\n";
        String content3 = "Ucuncu  satiri dosyaya yaz " + timeStr + "\n";

        //write to file
        op.writeFile(content1);
        op.writeFile(content2);
        op.writeFile(content3);

        //append to file
        op.appendFile(content1);
        op.appendFile(content2);
        op.appendFile(content3);


        //read file
        op.readFile("C:\\read-file.txt");


    }


NOT1: okunacak dosya C:\read-file.txt  dosyasıdır. C dizininde bu dosya bulunmazsa file not found exception hatası alırsınız.

NOT2: Özel karakterlerin string'e dönüştürebilmesi için dosya path inde  ki slash ları iki kere yazın C:\read-file.txt yi C:\\read-file.txt şeklinde

Son olarak projeyi run edince aşağıdaki çıktıları üretecektir.



kaynak dosyalar(github) : indirmek için tıklayın

Hiç yorum yok:

Yorum Gönder