Нужно читать и писать отдельно, поскольку нельзя вставить в открытый файл, просто добавить, как вы сделали.
String filename = "test.txt";
Charset charset = Charset.defaultCharset(); // StandardCharsets.UTF_8
Path path = Paths.get(filename);
List<String> lines = Files.lines(path, charset)
.map(line -> line.replaceAll("\\s+", "$0 "))
.collect(Collectors.toList());
Files.write(path, lines, charset);
Здесь я читаю строки как Stream<String>
из отдельных строк.Я заменяю пробел \\s+
тем же самым и дополнительным пробелом.
Однако, чтобы разбить «thisisatest» на слова, вам необходимо знание английского языка.
.map(line -> replaceWords(line))
List<String> allWords = Arrays.asList(
"are", "a",
"island", "is",
"tests", "test",
"thistle", "this", "th" /*5th*/
);
String replaceWords(String line) {
StringBuilder sb = new StringBuilder();
... loop through letter sequences (multiple words)
... and split them by sorted dictionary.
return sb.toString();
}
Поскольку это выглядит как домашняя работа, илипо крайней мере, некоторые интересные усилия должны остаться, остальное зависит от вас.