Java In TXT Datei neue Zeile schreiben?
Habe eine TXT Datei mit 10 Zeilen und möchte immer eine neue Zeile in die oberste Zeile einfügen. Dass im Prinzip nur die 10 Neuesten Zeilen in der TXT Datei stehen.
Bsp)
10
9
8
7
6
5
4
3
2
1
Wenn ich jetzt das Programm ausführe, gebe ich als Input "11". Dann soll 1 verschwinden und 11 über 10 geschrieben werden und halt alle Zahlen um eine Zeile nach unten, sodass nur 10 Zeilen da sind.
Kann mir da wer einen Beispielscode schreiben?
2 Antworten
Du kannst für dieses Vorhaben eine LinkedList verwenden. Dazu wäre eine Methode günstig, über die du der Liste neue Elemente (am Anfang) zufügst. Wenn es mehr als zehn Elemente sind, entfernst du zusätzlich das letzte Element.
void add(String element) {
if (list.size() > 10) {
list.pollLast();
}
list.offerFirst(element);
}
Den initialen Stand der Textdatei kann man mit readAllLines einholen.
Path path = Paths.get("path to txt file ...");
list.addAll(Files.readAllLines(path));
Und mit write wird geschrieben.
Files.write(path, list, Charset.defaultCharset());
Das ist die Zeichenkette, die zur Liste hinzukommt. Nach deinem Anwendungsfall zum Beispiel die "11".
Ich würde die Zeilen in ein Array lesen und dann das Array updaten und zum schluss alles in die Datei schreiben. So z.B. mit Python
f = open('input.txt','r')
l = f.read.splitlines()
f.close()
inp = ''
while inp != 'stop':
inp = input('Eingabe: ')
l[0] = inp
l.pop(9)
with open('input.txt', 'w') as f:
for i in l:
f.write(i+'\n')
Danke, aber verstehe ich noch nicht.
Was ist String element?