Bilgisayarımızın masaüstünde bulunan bir dosyayı önce byte byte sonra da karakter karakter okuyarak kopyalayalım.
[codesyntax lang=”java” lines=”no”]
package io; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class ByteByteKopyala { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("C:UsersErkinDesktopdeneme.txt"); out = new FileOutputStream("C:UsersErkinDesktopbyteKopyala.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } System.out.println("Dosya kopyalandı"); } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
[/codesyntax]
Byte okuma yazma işlemlerinde kullanılan FileInputStream ve FileOutputStream sınıfları yeterli oldu.
Şimdi de karakter karakter kopyalama yaparken karakterleri satır satır okuyalım. Bunun için FileReader ve FileWriter sınıfları yeterli olmuyor. Stream chaining özelliği ile BufferedReader ve BufferedWriter (ya da PrintWriter) sınıflarını kullanıyoruz.
[codesyntax lang=”php” lines=”no”]
package io; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class SatirKopyala { public static void main(String[] args) throws IOException { BufferedReader inputStream = null; PrintWriter outputStream = null; try { FileReader reader = new FileReader("C:UsersErkinDesktopdeneme.txt"); inputStream = new BufferedReader(reader); outputStream = new PrintWriter(new FileWriter("C:UsersErkinDesktopsatirKopyala.txt")); String l; while ((l = inputStream.readLine()) != null) { outputStream.println(l); } System.out.println("Kopyalandı"); } finally { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } } }
[/codesyntax]
BufferedWriter ve PrintWriter sınıfları arasındaki en büyük fark PrintWriter nesnesinin neredeyse bütün tipleri parametre olarak alan print() ve println() fonksiyonlarının olması. BufferedWriter sınıfındaki write() metodu da aynı işi yapmasına rağmen parametre olarak tek karakter ya da String alır.
BufferedReader sınıfının bize burda getirdiği avantaj readline() metodudur. Bu sayede satır satır okuma yazma yapabiliriz.