tacmot Geschrieben 9. Februar 2005 Geschrieben 9. Februar 2005 Hi Leute, ich bin auf der Suche nach einer Möglichkeit in eine Textdatei eine neue Zeile einzufügen. Hintergrund ist folgender, ich habe ein Log-File welches regelmäßig durch neue Einträge aktualisiert wird. Diese neuen Einträge sollen immer an der gleichen Stelle eingefügt werden, so das alle alten Einträge nach unten verschoben werden. Über ein RandomAccessFile werden die alten Einträge leider überschrieben, es sei denn ich lade das komplette Log-File in ein Array und füge die neuen dann hinzu. Allerdings dauert diese Methode mit zunehmender Dateigröße sehr lange. Kann mir das jemand nen ratsamen Tipp geben? Danke Zitieren
.Erbse Geschrieben 18. Februar 2005 Geschrieben 18. Februar 2005 Hi, die, meiner Meinung nach, beste Lösung für „logging“ in Java ist log4j. Es gibt zahlreiche Möglichkeiten log4j deinen Wünschen entsprechend zu konfigurieren. Guck es dir einfach an. :mod: http://logging.apache.org/log4j/docs/ oder deutsch http://www.javacore.de/tutorials/schnelle/log4jmanual.pdf Gruß .Erbse Zitieren
.Erbse Geschrieben 18. Februar 2005 Geschrieben 18. Februar 2005 Ich kann mein Beitrag nicht editieren :confused: ...egal. So nun, wenn du ein Buffer benutzt, dann soll es angeblich schneller gehen, hier ist mein Vorschlag: public class Tester { public static void main(String[] args) { String message = new Date() + " - test test\r\n"; File f = new File("logfile.log"); File temp = new File("temp.log"); try { if (!f.exists()) { f.createNewFile(); } byte[] buffer = new byte[1024]; FileInputStream fileIn = new FileInputStream(f); FileOutputStream out = new FileOutputStream(temp); out.write(message.getBytes()); int len = 0; while ((len = fileIn.read(buffer)) > 0) { out.write(buffer, 0, len); } fileIn.close(); out.close(); f.delete(); temp.renameTo(f); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } Buffergröße proportional zur Dateigröße. Viel Glück Gruß .Erbse Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.