Dosyadan veri okuyup konsola yazdırmak, hem günlük uygulamalarda hem de yazılım geliştirme süreçlerinde sıkça kullanılan bir işlemdir. Java, dosya okuma işlemleri için güçlü ve esnek API’ler sunar. Bu işlemler, metin dosyalarından yapılandırılmış veri formatlarına (örneğin, CSV veya JSON) kadar geniş bir yelpazede gerçekleştirilebilir. Bu yazıda, Java’da dosyadan veri okuma ve konsola yazdırma tekniklerini detaylı bir şekilde ele alacağız.
1. Dosya Okuma ve Konsola Yazdırmanın Önemi
1.1. Veri İşleme ve Görselleştirme
- Verileri dosyalardan okuyarak analiz etmek ve kullanıcıya sunmak için etkili bir yöntemdir.
1.2. Gelişmiş Loglama ve Raporlama
- Log dosyalarını okuyup anlamlı bir şekilde konsola yazdırarak hata ayıklama sürecini kolaylaştırır.
1.3. Test ve Eğitim Amaçlı Kullanım
- Kod geliştirme sırasında test verilerini dosyalardan alıp işlemek, süreçleri hızlandırır.
2. Java’da Dosya Okuma Teknikleri
2.1. FileReader ve BufferedReader Kullanımı
Bu yöntem, metin dosyalarını satır satır okumak için kullanılır.
- Örnek:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class DosyaOku {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader(“veriler.txt”))) {
String satir;
while ((satir = reader.readLine()) != null) {
System.out.println(satir);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.2. Scanner Kullanımı
Scanner sınıfı, hem dosya hem de konsol girişlerini okumak için uygun bir yöntemdir.
- Örnek:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class DosyaOkuScanner {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(new File(“veriler.txt”))) {
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
2.3. Files.readAllLines() Kullanımı
Java 8 ile gelen bu yöntem, dosyaları hızlıca okumak için idealdir.
- Örnek:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class DosyaOku {
public static void main(String[] args) {
try {
List<String> satirlar = Files.readAllLines(Paths.get(“veriler.txt”));
for (String satir : satirlar) {
System.out.println(satir);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.4. FileInputStream Kullanımı
Dosyaları byte düzeyinde okumak için kullanılır.
- Örnek:
import java.io.FileInputStream;
import java.io.IOException;
public class DosyaOkuStream {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream(“veriler.txt”)) {
int karakter;
while ((karakter = fis.read()) != -1) {
System.out.print((char) karakter);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. Yapılandırılmış Verileri Konsola Yazdırma
3.1. CSV Dosyası Okuma
CSV formatındaki dosyaları işlemek yaygın bir ihtiyaçtır.
- Örnek:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CsvOkuma {
public static void main(String[] args) {
String dosya = “veriler.csv”;
try (BufferedReader reader = new BufferedReader(new FileReader(dosya))) {
String satir;
while ((satir = reader.readLine()) != null) {
String[] veriler = satir.split(“,”);
System.out.format(“Ad: %s, Yaş: %s\n”, veriler[0], veriler[1]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.2. JSON Dosyası Okuma
JSON formatındaki verileri işlemek için popüler bir yöntemdir.
- Örnek (Gson Kütüphanesi Kullanılarak):
import com.google.gson.Gson;
import java.io.FileReader;
class Kullanici {
String ad;
int yas;
}
public class JsonOkuma {
public static void main(String[] args) {
try (FileReader reader = new FileReader(“veriler.json”)) {
Gson gson = new Gson();
Kullanici[] kullanicilar = gson.fromJson(reader, Kullanici[].class);
for (Kullanici kullanici : kullanicilar) {
System.out.println(“Ad: ” + kullanici.ad + “, Yaş: ” + kullanici.yas);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. Dosya Okuma ve Yazdırma Sürecinde İpuçları
- Büyük Dosyalar için Performans Optimizasyonu:
- BufferedReader veya FileInputStream kullanın.
- Hata Yönetimi:
- Dosya bulunamadığında veya okuma sırasında oluşan hataları doğru bir şekilde loglayın.
- Kod Tekrarından Kaçının:
- Dosya okuma işlemleri için yardımcı sınıflar veya metotlar oluşturun.
5. Örnek Proje: Kullanıcı Bilgilerini Dosyadan Okuma ve Yazdırma
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class KullaniciOkuma {
public static void main(String[] args) {
String dosya = “kullanicilar.txt”;
try (BufferedReader reader = new BufferedReader(new FileReader(dosya))) {
System.out.format(“%-10s %-10s\n”, “Ad”, “Yaş”);
System.out.println(“——————-“);
String satir;
while ((satir = reader.readLine()) != null) {
String[] bilgiler = satir.split(“,”);
System.out.format(“%-10s %-10s\n”, bilgiler[0], bilgiler[1]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}