Zeile unter einer bestimmen Zeile hinzufügen(File)

xJan45x

Aktives Mitglied
Hallo Leute,
Auch wenn der Title vllt. ein bisschen verwirrend ist, ich versuche es euch hier so gut wie möglich zu erklären. Und zwar bin ich grade dabei ein Programm zu schreiben das eine Datei, die zu ein Spiel gehört ändert, in Form von Werten ändern, Werte hinzufügen und auch Werte löschen. Das hinzufügen einer Zeile am Ende der Datei funktioniert problemlos. Aber nicht wenn ein bestimme Zeile unter eine andere Zeile muss. Ich meine das so der Wert "High=1" ist Standardmäßig nicht vorhanden. Kann aber manuell hinzugefügt werden. Und zwar darf er nicht ans ende der Datei muss sondern unter der Zeile "[Grafik]". Nur wenn der Wert unter dem Punkt [Grafik] ist funktioniert er auch sonst nicht. Ich kann die Zeile [Grafik] in Java suchen weis aber nicht wie ich unter dem Punkt [Grafik] dann meine gewünschte Zeile(hier High=1) hinzufügen kann.
Kann mir da einer helfen? Verzweifelt hier bei.
Mfg Jan.
 
Also wenn ich das richtig verstanden habe willst du eine bestimmte zeile suchen, und darunter dann eine andere einfügen ?
In diesem Fall geht das in etwas so:
Ach ja, der Code ist hier im Editor geschrieben und kann daher Fehler enthalten.

Java:
File file = new File("path ?");
ArrayList<String> lines = new ArrayList<String>;

//Datei einlesen und jede zeile speichern
BufferedReader reader = new BufferedReader(new FileReader(file));
String currentLine = null;
while((currentLine = reader.readLine()) != null){
    lines.add(currentLine);
}
reader.close();

//Nach zeile Suchen
public int getLineIndex(String line){
    int currentIndex = 0;
    for(String currentLine : lines){
        if(currentLine.equals(line){
             return currentIndex;
        }
        currentIndex++;
    }
}

//Einfügen
lines.add(getLineIndex("dies soll gesucht werden" + 1, "Dies soll eingefügt werden");

//In datei schreiben
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
for(String currentLine : lines){
    writer.println(currentLine);
}
writer.flush();
writer.close();

mfg Major
 

Zurück
Oben