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
.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
.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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden