Чтобы перевернуть строки текстового файла, загрузите все строки в List
, затем вызовите Collections.reverse(...)
, чтобы перевернуть строки.
Чтобы перевернуть символы линий, используйте StringBuilder
и его reverse()
метод. В отличие от вашей домашней реализации, StringBuilder
правильно обрабатывает символы из дополнительных плоскостей Unicode, например emojis.
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) throws Exception {
// Hope this works ? ?
List<String> lines;
try (Stream<String> lineStream = Files.lines(Paths.get("src/main/java/Test.java"))) {
lines = lineStream.map(line -> new StringBuilder(line).reverse().toString())
.collect(Collectors.toList());
}
Collections.reverse(lines);
Files.write(Paths.get("Reversed.txt"), lines);
}
}
Вывод (Reversed.txt)
}
}
;)senil ,)"txt.desreveR"(teg.shtaP(etirw.seliF
;)senil(esrever.snoitcelloC
}
;))(tsiLot.srotcelloC(tcelloc.
))(gnirtSot.)(esrever.)enil(redliuBgnirtS wen >- enil(pam.maertSenil = senil
{ )))"avaj.tseT/avaj/niam/crs"(teg.shtaP(senil.seliF = maertSenil >gnirtS<maertS( yrt
;senil >gnirtS<tsiL
? ? skrow siht epoH //
{ noitpecxE sworht )sgra ][gnirtS(niam diov citats cilbup
{ tseT ssalc cilbup
;maertS.maerts.litu.avaj tropmi
;srotcelloC.maerts.litu.avaj tropmi
;tsiL.litu.avaj tropmi
;snoitcelloC.litu.avaj tropmi
;shtaP.elif.oin.avaj tropmi
;seliF.elif.oin.avaj tropmi