zu einer bestimmten Zeilennummer schreiben Ich schreibe gerade mein Projekt für die Schule, in der ich in txt-Dateien lesen und schreiben muss. Ich kann sie richtig lesen, aber ich kann sie nur am Ende von einem angehängten FileWriter schreiben. Ich würde gerne in der Lage sein, Dinge in meinen TXT-Dateien auf Zeilennummern zu überschreiben, indem ich zuerst die Daten in der Zeile lösche und dann die neuen Daten einlege. Ich habe versucht, diese Methode zu verwenden ...Wie kann ich in einer txt-Datei in Java
public void overWriteFile(String dataType, String newData) throws IOException
{
ReadFile file = new ReadFile(path);
RandomAccessFile ra = new RandomAccessFile(path, "rw");
int line = file.lineNumber(path, dataType);
ra.seek(line);
ra.writeUTF(dataType.toUpperCase() + ":" + newData);
}
aber ich glaube, dass das Suchverfahren in Bytes entlang bewegt, anstatt Zeilennummern. Kann jemand helfen. Vielen Dank im Voraus :)
P.S. Die file.lineNumber-Methode gibt die genaue Zeile zurück, in der sich die alten Daten befanden, daher habe ich bereits die Zeilennummer, in die geschrieben werden muss.
EDIT: Soloution gefunden! Danke Jungs :) Ich werde die soloution Sie unten, wenn jemand interessiert ist
public void overWriteFile(String dataType, String newData, Team team, int dataOrder) throws IOException
{
try
{
ReadFile fileRead = new ReadFile(path);
String data = "";
if(path == "res/metadata.txt")
{
data = fileRead.getMetaData(dataType);
}
else if(path == "res/squads.txt")
{
data = fileRead.getSquadData(dataType, dataOrder);
}
else if(path == "res/users.txt")
{
data = fileRead.getUsernameData(dataType, dataOrder);
}
else if(path == ("res/playerdata/" + team.teamname + ".txt"))
{
//data = fileRead.getPlayerData(dataType, team.teamname, dataOrder);
}
BufferedReader file = new BufferedReader(new FileReader(path));
String line;
String input = "";
while((line = file.readLine()) != null)
{
input += line + '\n';
}
input = input.replace(dataType.toUpperCase() + ":" + data, dataType.toUpperCase() + ":" + newData);
FileOutputStream out = new FileOutputStream(path);
out.write(input.getBytes());
}
catch(Exception e)
{
System.out.println("Error overwriting file: " + path);
e.printStackTrace();
}
}
Wenn Sie die Länge jeder Zeile nicht kennen, können Sie nicht zufällig auf eine bestimmte Zeile zugreifen. Kopieren Sie einfach alle Zeilen, bis Sie die gesuchte gefunden haben, und schreiben Sie dann den Ersatz, und schreiben Sie die restlichen Zeilen. –