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