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.
İ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
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
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.