0

Java I/O işlemleri – Dosya işlemleri

Merhaba Arkadaşlar bu yazımda java da dosya işlemlerini nasıl yapacağız bundan bahsedeceğim. Projelerimizde verileri hep kullandık ancak programı çalıştırdığımızda oluşturduk program çalıştığı sürece gördük ancak programı kapatınca bu veriler silindi. Çünkü herhangi bir yere kayıt yapmadık. Ram üzerine kaydettik ve işimiz bitince ram üzerinden silindi. Şimdi bu bölümde bu verileri nasıl kaydederiz ona bakalım. buyrun başlayalım. 

1- Yeni bir dosya oluşturma 

Java’da ki File sınıfının içindeki  createNewFile()  metodunu kullanarak yeni bir dosya oluşturabiliriz.  Bu metod geri dönüş değeri olarak boolean ( True/False) türünde bir bilgi döner. Eğer belirttiğimiz lokasyonda bu dosya varsa false döner değilse true döner . bunu bir örnek ile uygulayalım. 

 public static void main(String[] args) {
	// write your code here

        String path="C://myFolder//deneme.txt";// Oluşturulacak dosyanın yolu
        // direk C: altında oluşturduğumuzda erişim hatası alabilirsiniz.

        File file=new File(path);

        try {

            
            boolean sonuc=file.createNewFile();
            // bu metod bir exception firlatabileceğinden
            // editörümüz bunu try -catch içine almamızı istiyor.
   
            System.out.println("İzin var");

            if(sonuc){

                System.out.println("Belirtilen dosya başarı ile oluştruldu");
            }
            else
            {

                System.out.println("Bu dosya zaten önceden oluşturulmuş");


        }


        } catch (Exception e) {
            e.printStackTrace();
        }


    }

2- Dosya Okuma- BufferedInputStream

Bu Şekilde okumada Stream ifadesi olduğuna göre byte byte okuma yapacağız bu okuma yöntemi performans açısından gayet iyi.  Yapacaklarımıza bakacağız. Öncelikle File() nesnesi ile yeni bir dosya oluşturacağız . Bu oluşturduğumuz dosyaya FileInputStream nesnesi ile erişip açacağız. BufferedInputStream nesnesi ile de okuma yapacağız. Buffer’i kontrol edeceğiz bunu kontrol ederken available()>0 şeklinde bir kontrol kullancağız. Bu metod dosyanın sonuna gelmedikçe 0 dan büyük bir değer döndürecektir. Şimdi bunu örnek ile inceleyelim. 

public class Main {

    public static void main(String[] args) {
   // write your code here

        String path="C://myFolder//deneme.txt";
        // direk C: altında oluşturduğumuzda erişim hatası alabilirsiniz.

        File file=new File(path);

        FileInputStream fis=null;
        BufferedInputStream bis=null;

        try {

            fis=new FileInputStream(file);
            bis=new BufferedInputStream(fis);

            while(bis.available()>0){

                System.out.println((char) bis.read());
            }

        }   catch (FileNotFoundException e) {
            e.printStackTrace();
        }
            catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                bis.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

// bu programla dosyamızın içindeki bilgileri karakter karakter okuyacaktır. }

3- Dosya Okuma – BufferedReader

Bir önceki örnekte byte byte okuduk. Şimdi byte byte değilde satır satır yada primitive tipler şeklinde okuma yapalım. bunun için iki tane metod kullancağız readLine() ve read() . 

  public static void main(String[] args) {
	// write your code here


        BufferedReader br = null;
        BufferedReader br2 = null;
        try{
            br = new BufferedReader(new FileReader("C://myFolder//deneme1.txt"));

            //Okumadaki birinci yöntem
            System.out.println("readLine() metodu ile Dosyayı satır satır okuma:");
            String contentLine = br.readLine();
            while (contentLine != null) {
                System.out.println(contentLine);
                contentLine = br.readLine();
            }

            br2 = new BufferedReader(new FileReader("C://myFolder//deneme1.txt"));

            //Dosya okumada ikinci yöntem
            System.out.println("read() metodu ile dosyayı okumak:");
            int num=0;
            char ch;
            while((num=br2.read()) != -1)
            {
                ch=(char)num;
                System.out.print(ch);
            }

        }
        catch (IOException ioe)
        {
            ioe.printStackTrace();
        }
        finally
        {
            try {
                if (br != null)
                    br.close();
                if (br2 != null)
                    br2.close();
            }
            catch (IOException ioe)
            {
                System.out.println("Buffered Reader Kapatma Hatası");
            }
        }


    }

4- Dosyaya Yazma – FileOutputStream

Bu bölümde FileOutputStream() nesnesinin write() metodu ile dosyaya nasıl kayıt yapacağımızı göreceğiz.  Bu nesnemiz bir Stream nesnesi olduğundan dolayı yazının başında da dediğimiz gibi byte[] dizisi şeklinde kayıt yapacağız metodumuz şu yapıda bir metod olacak. 

public void write(byte[] b) throws IOException

String olan içeriğimizi byte[] dizisine dönüştüreceğiz ve metoda yollayacağız.  

String yazilacak ="bunu dosyaya yaz";
byte[] bytesArray = yazilacak.getBytes();
 public static void main(String[] args) {
	// write your code here


        FileOutputStream fos;
        File file;

        try{
        file=new File("C://myFolder//deneme.txt");

        fos=new FileOutputStream(file);
        String content="Bunuda Kaydet";


        byte[] bytes=content.getBytes();

        fos.write(bytes);
        fos.flush();

        }


        catch (Exception ex)
        {


        }

    }

Tabi bu şekilde yaptığınızda dosyanın içinde olan herşey silinip yeniden bunlar içine kaydedilecek . 

5- BufferedWriter ile Dosya yazma 

Bu nesne ile dosya yazmanın avantajı şu ki; bir önceki usul de byte veya byte[] dizisi şeklinde yazıyorduk. Şimdi ise direk karekter tabanlı olarak dosyaya yazma yapabiliriz. 

 public static void main(String[] args) throws IOException {
	// write your code here


        BufferedWriter bufferedWriter=null;

        File file=new File("C://Deneme/yeni.txt");

        if(!file.exists()){

            file.createNewFile();
        }

        FileWriter fileWriter = new FileWriter(file);
        bufferedWriter=new BufferedWriter(fileWriter);

        String content="Merhaba Dünya";
        bufferedWriter.write(content);
        bufferedWriter.flush();
        System.out.println("file write Success");



    }

6- Oluşturduğumuz Dosyanın sonuna Veri Ekleme

Dosyanın sonuna veri eklerken 2 tane yöntemden bahsedeceğim . Bu yöntemlerden birincisi BufferedWriter , FileWriter kullanarak yapabiliriz. bu yöntem  performans sağlar . Bu yöntemde yukarıdaki örnekten farklı olarak sadece FileWriter nesnesine true parametre geçmemiz lazım. 

  public static void main(String[] args) throws IOException {
        // write your code here


        BufferedWriter bufferedWriter=null;

        File file=new File("C://Deneme/yeni.txt");

        if(!file.exists()){

            file.createNewFile();
        }

        //  fileWriter nesnesine true parametre geçersek eklenen content'i dosyanın sonuna ekler
        
        FileWriter fileWriter = new FileWriter(file,true);
        bufferedWriter=new BufferedWriter(fileWriter);

        String content="Merhaba Dünya";
        bufferedWriter.write(content);
        bufferedWriter.flush();
        bufferedWriter.close();
        System.out.println("file write Success");



    }

 

 

admin

Bir cevap yazın

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