Kodların sağlıklı çalışması için okuyacağımız ve yazacağımız text dosyalarını workspace’e koymamız gerekir. Aslında bu dosyaları java kodları kullanarak kendimiz de oluşturabiliriz. Ama ben bu örnekte text1.txt ve text2.txt dosyalarını workspace’e kendim oluşturdum. Workspace: Proje dosyası
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Process {
public static void main(String[] args) {
Scanner scanFile=null; // dosyayı okumak için Scanner objesi
PrintWriter writer=null; // dosyaya yazmak için PrintWriter objesi
File file=new File("text1.txt"); // okunacak dosya File tipinde bir
// obje referansında tutuluyor
try {
scanFile=new Scanner(file); // olası bir exceptionu handle etmek için
// try-catch bloğu kullanıyoruz
} catch (FileNotFoundException e) {
System.out.println("File could not found - Dosya bulunamadı. ERROR: "+e);
// exception fırlatıldığında e ile yakalayıp gerekli mesajla birlikte basıyoruz.
}
try {
writer=new PrintWriter("text2.txt");
} catch (FileNotFoundException e) {
System.out.println("File could not created - Dosya oluşturulamadı(yazmak için). ERROR: "+e);
}
while(scanFile.hasNext()) // dosyayı scanFile referansı ile taramaya başlıyoruz
{ // hasNext'i olduğu sürece yani dosya sonuna kadar
writer.println(scanFile.nextLine()); // her okunan line(satır)'ı
} // aynen diğer dosyaya yazıyoruz
scanFile.close(); // scanFile objesini kapatalım
writer.close(); // writer objesini kapatalım.
System.out.println("The copy operation is completed. - Kopyalama işlemi tamamlandı.");
}
}
Aslında file tutan referansları, bazı sistemler otomatik kapatıyor. Ancak bazıları kapatmadığı için hem sistemi gereksiz yere kullanmış oluyoruz hem de dosyaya veri yazma işlemi başarısız olabiliyor. Mesela ubuntu sistemimde, buradaki writer objesini kapatmadığım zaman dosyayı hiçbirşey yazılmamış olarak buluyorum. Bu yüzden, özellikle file tutan referanslarımızı her proje sonunda mutlaka kapatmalıyız.