
org.opentripplanner.framework.io.FileUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
The newest version!
package org.opentripplanner.framework.io;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
public class FileUtils {
/**
* Read the content of the file into a string. The file is must be UTF-8 encoded. If an error
* occurs the exception is converted to a {@link RuntimeException}.
*/
public static String readFile(File file) {
try (var is = new FileInputStream(file)) {
return new String(is.readAllBytes(), UTF_8);
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
}
/**
* Write the given input doc to the given file. The file is UTF-8 encoded. If an error
* occurs the exception is converted to a {@link RuntimeException}.
*/
public static void writeFile(File file, String doc) {
try (var fileOut = new FileOutputStream(file)) {
var out = new PrintWriter(fileOut);
out.write(doc);
out.flush();
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
}
/**
* This asserts can be used to compare a document with a file content, trailing whitespace
* including line-breaks are striped away before comparison.
*/
public static void assertFileEquals(String expectedDoc, File newFile) {
String resultDoc = readFile(newFile);
var expectedLines = expectedDoc.split("[\n\r]+");
var resultLines = resultDoc.split("[\n\r]+");
int i = 0, j = 0;
while (i < expectedLines.length && j < resultLines.length) {
while (expectedLines[i].isBlank()) {
++i;
}
while (resultLines[j].isBlank()) {
++j;
}
var expected = expectedLines[i].stripTrailing();
var result = resultLines[j].stripTrailing();
if (!expected.equals(result)) {
throw new IllegalStateException(
"""
The file(%s) differ from the expected document.
Expected (line: %3d): %s
Result (line: %3d): %s
""".formatted(
newFile.getAbsolutePath(),
i,
expected,
j,
result
)
);
}
++i;
++j;
}
if (i < expectedLines.length) {
throw new IllegalStateException(
"Lines missing in new file(" + newFile.getAbsolutePath() + "): " + expectedLines[i]
);
}
if (j < resultLines.length) {
throw new IllegalStateException(
"Lines not expected in new file(" + newFile.getAbsolutePath() + "): " + resultLines[j]
);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy