diff --git a/core-java-modules/core-java-io-8/pom.xml b/core-java-modules/core-java-io-8/pom.xml new file mode 100644 index 000000000000..3ce9d78b643b --- /dev/null +++ b/core-java-modules/core-java-io-8/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + core-java-io-8 + jar + core-java-io-8 + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + ${java.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh-generator.version} + + + + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-io-8/src/test/java/com/baeldung/replacewordinfile/ReplaceWordInFileUnitTest.java b/core-java-modules/core-java-io-8/src/test/java/com/baeldung/replacewordinfile/ReplaceWordInFileUnitTest.java new file mode 100644 index 000000000000..3cb282e179e7 --- /dev/null +++ b/core-java-modules/core-java-io-8/src/test/java/com/baeldung/replacewordinfile/ReplaceWordInFileUnitTest.java @@ -0,0 +1,100 @@ +package com.baeldung.replacewordinfile; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; +import java.util.List; +import java.util.Scanner; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.Test; + +public class ReplaceWordInFileUnitTest { + + private static final String FILE_PATH = "src/test/resources/data.txt"; + private static final String FILE_OUTPUT_PATH = "src/test/resources/data_output.txt"; + private static final String OUTPUT_TO_VERIFY = "This is a test file."+System.lineSeparator()+"This is a test file."+System.lineSeparator()+"This is a test file."; + + @Test + public void givenFile_whenUsingBufferedReader_thenReplacedWordCorrect() throws IOException { + StringBuilder fileContent = new StringBuilder(); + try (BufferedReader br = Files.newBufferedReader(Paths.get(FILE_PATH))) { + String line; + while ((line = br.readLine()) != null){ + fileContent.append(line).append(System.lineSeparator()); + } + String replacedContent = fileContent.toString().replace("sample","test").trim(); + try (FileWriter fw = new FileWriter(FILE_OUTPUT_PATH)) { + fw.write(replacedContent); + } + + assertEquals(OUTPUT_TO_VERIFY,replacedContent); + } + } + + @Test + public void givenFile_whenUsingScanner_thenReplacedWordCorrect() throws IOException { + StringBuilder fileContent = new StringBuilder(); + try (Scanner scanner = new Scanner(new File(FILE_PATH))) { + while (scanner.hasNextLine()){ + fileContent.append(scanner.nextLine()).append(System.lineSeparator()); + } + String replacedContent = fileContent.toString().replace("sample","test").trim(); + try (FileWriter fw = new FileWriter(FILE_OUTPUT_PATH)) { + fw.write(replacedContent); + } + + assertEquals(OUTPUT_TO_VERIFY,replacedContent); + } + } + + @Test + public void givenFile_whenUsingFilesAPI_thenReplacedWordCorrect() throws IOException{ + try (Stream lines = Files.lines(Paths.get(FILE_PATH))) { + List list = lines.map(line -> line.replace("sample", "test")) + .collect(Collectors.toList()); + Files.write(Paths.get(FILE_OUTPUT_PATH), list, StandardCharsets.UTF_8); + + assertEquals(OUTPUT_TO_VERIFY,String.join(System.lineSeparator(), list)); + } + } + + @Test + public void givenFile_whenUsingFileUtils_thenReplacedWordCorrect() throws IOException{ + StringBuilder fileContent = new StringBuilder(); + List lines = FileUtils.readLines(new File(FILE_PATH), "UTF-8"); + lines.forEach(line -> fileContent.append(line).append(System.lineSeparator())); + String replacedContent = fileContent.toString().replace("sample","test").trim(); + try (FileWriter fw = new FileWriter(FILE_OUTPUT_PATH)) { + fw.write(replacedContent); + } + + assertEquals(OUTPUT_TO_VERIFY,replacedContent); + } + + @Test + public void givenLargeFile_whenUsingFilesAPI_thenReplacedWordCorrect() throws IOException{ + try (Stream lines = Files.lines(Paths.get(FILE_PATH))) { + Files.writeString(Paths.get(FILE_OUTPUT_PATH), "",StandardCharsets.UTF_8, StandardOpenOption.CREATE,StandardOpenOption.TRUNCATE_EXISTING); + lines.forEach(line -> { + line = line.replace("sample", "test") + System.lineSeparator(); + try { + Files.writeString(Paths.get(FILE_OUTPUT_PATH),line,StandardCharsets.UTF_8, StandardOpenOption.APPEND); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + + assertEquals(OUTPUT_TO_VERIFY,Files.readString(Paths.get(FILE_OUTPUT_PATH)).trim()); + } + } +} diff --git a/core-java-modules/core-java-io-8/src/test/resources/data.txt b/core-java-modules/core-java-io-8/src/test/resources/data.txt new file mode 100644 index 000000000000..c06c3cdf4793 --- /dev/null +++ b/core-java-modules/core-java-io-8/src/test/resources/data.txt @@ -0,0 +1,3 @@ +This is a sample file. +This is a sample file. +This is a sample file. \ No newline at end of file diff --git a/core-java-modules/core-java-io-8/src/test/resources/data_output.txt b/core-java-modules/core-java-io-8/src/test/resources/data_output.txt new file mode 100644 index 000000000000..175ef9ff3b1c --- /dev/null +++ b/core-java-modules/core-java-io-8/src/test/resources/data_output.txt @@ -0,0 +1,3 @@ +This is a test file. +This is a test file. +This is a test file. \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 08b2b801ee14..fa13a1c43bc5 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -146,6 +146,7 @@ core-java-io-4 core-java-io-5 core-java-io-7 + core-java-io-8 core-java-io-apis core-java-io-apis-2