Самый простой ответ, который я могу придумать, используя Java 7+ и не опираясь на устаревшие строительные блоки, такие как Stack
, следующий:
private static final String INPUT_FILE = "input.txt";
private static final String OUTPUT_FILE = "output.txt";
private static final String USER_HOME = System.getProperty("user.home");
public static void main(String... args) {
try {
try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(Paths.get(USER_HOME + "/" + OUTPUT_FILE)))) {
Files
.lines(Paths.get(USER_HOME + "/" + INPUT_FILE))
.collect(Collectors.toCollection(LinkedList::new))
.descendingIterator()
.forEachRemaining(writer::println);
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
Просто прочитайте во входном файле и получите поток его содержимого в String
(Files#lines
). Затем соберите их в LinkedList
, используя нисходящий итератор, l oop поверх них и запишите их в выходной файл.