Hallo,
ich frage mich gerade was die gängige bzw. beste Methode ist um Dateien zu bearbeiten.
Die Datei soll verändert werden (eventuell nur ein paar Zeilen) und unter dem gleichen Dateinamen auch wieder abgeändert gespeichert werden.
Falls die Datei nur erweitert wird, kann man ja z.B. die "append" Option benutzen.
Die Datei in eine ArrayList oder ähnliches einlesen/abspeichern, dann verändern und zurückschreiben sollte schonmal wegfallen. Besonders bei großen Dateien bzw. auch bei hoher Dateianzahl.
Meine Überlegung war jetzt folgende:
Eine Zeile der Datei einlesen -> Zeile bearbeiten -> Zeile in eine "Zwischendatei" speichern (z.b. "Dateiname.buff") -> neue Zeile einlesen ...
Am Ende alte Datei löschen und "Dateiname.buff" umbennen.
Ist dies die gängige Praxis oder welche Methoden wären hierbei angebracht?
Hier mal ein Beispielcode:
Falls das die bzw. eine der gängisten Methoden ist: Habt ihr noch Verbessungsvorschläge? Was ist z.B. mit der "renameTo"-Methode, die soll ja nicht wirklich immer und überall funktionieren.
Besten Dank und Grüß
joschu
ich frage mich gerade was die gängige bzw. beste Methode ist um Dateien zu bearbeiten.
Die Datei soll verändert werden (eventuell nur ein paar Zeilen) und unter dem gleichen Dateinamen auch wieder abgeändert gespeichert werden.
Falls die Datei nur erweitert wird, kann man ja z.B. die "append" Option benutzen.
Die Datei in eine ArrayList oder ähnliches einlesen/abspeichern, dann verändern und zurückschreiben sollte schonmal wegfallen. Besonders bei großen Dateien bzw. auch bei hoher Dateianzahl.
Meine Überlegung war jetzt folgende:
Eine Zeile der Datei einlesen -> Zeile bearbeiten -> Zeile in eine "Zwischendatei" speichern (z.b. "Dateiname.buff") -> neue Zeile einlesen ...
Am Ende alte Datei löschen und "Dateiname.buff" umbennen.
Ist dies die gängige Praxis oder welche Methoden wären hierbei angebracht?
Hier mal ein Beispielcode:
Java:
class FileWorker{
public static void main(String[] args){
File oldFile = new File(args[0]);
File newFile = new File(args[0] + "-buffer");
try{
BufferedReader br = new BufferedReader(new FileReader(oldFile));
PrintWriter pw = new PrintWriter(new FileWriter(newFile));
String line;
try{
while((line = br.readLine())!=null){
if(line.contains("test")){
pw.println("found!!!");
}else{
pw.println(line);
}
}
}catch(IOException e){
System.out.println("IOException");
}finally{
br.close();
pw.close();
}
}catch(FileNotFoundException e){
System.out.println("FileNotFoundException");
}catch(IOException e){
System.out.println("IOException by close()");
}
if(oldFile.delete()){
if(newFile.renameTo(oldFile)){
System.out.println("OK");
}else{
System.out.println("Could not rename target file");
}
}else{
System.out.println("Could not delete source file");
}
}
}
Falls das die bzw. eine der gängisten Methoden ist: Habt ihr noch Verbessungsvorschläge? Was ist z.B. mit der "renameTo"-Methode, die soll ja nicht wirklich immer und überall funktionieren.
Besten Dank und Grüß
joschu