这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions core-java-modules/core-java-io-8/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>core-java-io-8</artifactId>
<packaging>jar</packaging>
<name>core-java-io-8</name>

<parent>
<groupId>com.baeldung.core-java-modules</groupId>
<artifactId>core-java-modules</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh-generator.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -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<String> lines = Files.lines(Paths.get(FILE_PATH))) {
List<String> 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<String> 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<String> 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());
}
}
}
3 changes: 3 additions & 0 deletions core-java-modules/core-java-io-8/src/test/resources/data.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This is a sample file.
This is a sample file.
This is a sample file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This is a test file.
This is a test file.
This is a test file.
1 change: 1 addition & 0 deletions core-java-modules/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@
<module>core-java-io-4</module>
<module>core-java-io-5</module>
<module>core-java-io-7</module>
<module>core-java-io-8</module>
<!-- <module>core-java-io-6</module> --> <!-- failing after upgrade to jdk21 -->
<module>core-java-io-apis</module>
<module>core-java-io-apis-2</module>
Expand Down