16 Kasım 2019

Java 8 Stream ile Dosya İçerisinde Anlık String Bulma ve Değiştirme İşlemi

Java 8 Stream Find and Replace File Content

Java 8 Stream API kullanarak projedeki bir dosya içerisindeki String değeri bulup onu anlık olarak yenisi ile değiştirme metodunu sizlerle paylaşacağım. Bunu yaparken projeyi Update etmenize veya Refresh yapmanıza gerek yoktur. Proje içerisindeki tüm dosya türleri olabilir bu işlemi yapmak istediğinizde: Text, Java, SQL veya diğer yazılabilir-okunabilir dosyalar.

Ben neden bu çözüme ihtiyaç duydum diye soracak olursanız? JUnit ile Test Otomasyon Case'leri yazarken aynı senaryoları farklı Test ortamlarında da koşmak istiyordum ve Testleri tek sefer yazıp her ortam için çalıştırma ihtiyacı duydum. API Framework Projemdeki Environment.java dosyasında test ortamlarını bu method ile değiştirerek sorunu çözdüm.

Java 8 Stream ile Dosya İçerisinde Anlık String Bulma ve Değiştirme İşlemi

İlk olarak aşağıdaki modifyFile metodunu ortak bir Class'a ekleyin. Bu metodu kullanarak testlerimizi yazacağız. Görselleri de ekliyorum, methodu yazarken yardımcı olması için.
public static void modifyFile(String filePath, String oldString, String newString)
{
    try {
        Path path = Paths.get(filePath);
        Stream  lines = Files.lines(path);
        List  replaced = lines.map(line -> line.replaceAll(oldString, newString)).collect(Collectors.toList());
        Files.write(path, replaced);
        lines.close();
    } catch (IOException e) {e.printStackTrace();}
}

filePath: Dosya Yolu (Path)
oldString: Değişmesini istediğiniz String Değer
newString: Yeni String Değer

Java 8 Stream ile Dosya İçerisinde Anlık String Bulma ve Değiştirme İşlemi

Aşağıdaki gibi Test Class'ı oluşturup içine değerleri yazabiliriz.
 @Test  
 public void Test() {  
      modifyFile("C:\\TestCenter\\file.txt", "uat-test", "preprod-test");  
      System.out.println("File Updated");  
 }  

Proje içerisindeki bir JAVA dosyasını ise aşağıdaki gibi belirtebilir ve filePath olarak verebilirsiniz.

public static final String JAVA_FILE = ".\\src\\main\\java\\Project\\Environment.java";

Bu methodu aramak için aşağıdaki arama cümlecikleri sıklıkla kullanımış;
Java Replace String File.
Java 8 Stream Find and Replace File Content.
How to Replace Specific String in Text File in Java?
Find and Replace Words/Lines in a File for Java.
Read Files and Replace Strings.

Ben en kısa ve hızlı çözüm bunu buldum. Umarım faydalı olmuştur. Java 8 Stream ile en kullanışlı yöntemin bu olduğunu düşünüyorum.

Burak AVCI

Hiç yorum yok:

Yorum Gönder