Datei lesen ohne sie für umbenennen/verschieben zu sperren

dermoritz

Bekanntes Mitglied
Gibt es eine Möglichkeit eine (Log)-Datei zu lesen ohne anderen Prozess zu verbieten dies umzubenennen?

Die Problematik ist folgende: ich brauche eine Art Echtzeit-Log-Auswerter. Bestimmte Prozesse (3rd Party, nicht Java) schreiben Log-Dateien und benennen sie manchmal um. Nun will ich diese Dateien lesen während sie beschrieben werden ohne das schreibende Programm zu hindern diese umzubenennen. In Java würde falls es geht dann eine File-Not-Found Exception geworfen die man entsprechend fangen könnte.

Geht das irgendwie?
 

Network

Top Contributor
Nein, und das liegt nicht an Java sondern am Betriebssystem -> Sicherheit
In und Outputstreams darf es nur einmal geben.

Es sei denn es handelt sich bei den Schreibern auch um Java-Programme. Ich meinte mal gehört zu haben, dass das dann trotzdem funktioniert...
 

dermoritz

Bekanntes Mitglied
Vielen Dank,

gibt es denn wenigstens Möglichkeiten die Zeit in der eine Umbenennung unmöglich ist zu minimieren? Beim parsen von Log-Dateien will man ja eigentlich immer nur die letzte Zeile lesen.
Wenn man nur die letzte Zeile lesen würde oder die ganze Datei in den Speicher kopieren würde und dann darauf rumliest wäre diese Zeit schon recht klein oder?

Der Use-Case (lies Log-Dateien während sie geschrieben werden, welche sicher immermal umbenennen könnten) an sich sollte sehr geläufig sein. Ich hab gedacht da sollte es schon einige Lösungen geben?!
 
B

bygones

Gast
ich bezweifle dass es einen sinnigen Use case gibt bei den ein aktives Log file mal eben kurz umbenannt wird. In einer aktiven Applikation mal so eben das Log file umzunennen find ich mehr als befremdlich.

Unter welchem System läuft das denn ? vielleicht reicht schon ein einfaches [c]tail [-f][/c]
 

dermoritz

Bekanntes Mitglied
Es gibt Programme die ihre eigenen Logdateien je nach eingestellter Größe umbenennen. In meinem Fall sind es irgend welche Windows-Programme deren Arbeit ich überwachen muss.
Wann die einzelnen Programme Log-Dateien umbenennen habe ich nicht in der Hand. Ich weiß noch nicht einmal wie sie reagieren falls die Umbenennung fehlschlägt (von ignorieren und weiter schreiben bis unhandled Exception ist da alles drin). Mein Überwachungstool soll eben möglichst unbemerkt und aktuell die Logdateien auswerten.
 
B

bygones

Gast
halte ich immer noch für ziemlich fragwürdig... aber bygones

du musst natürlich wissen wie dann die neuen Logfiles heißen... dann kannst du wie du schon schreibst das Logfile analysieren und wenn der fehler kommt dann reagierst du und analyisierst das neue....
 

Network

Top Contributor
Wie willst du eine Datei in den Cache einlesen, wenn du nichtmal ein Stream dazu aufbauen kannst? ???:L

Wir wissen auch nicht ob die Programme ihre Streams überhaupt schließen! Evt. bleiben diese ja bis zum Beenden geöffnet...
Du kannst nur versuchen in einer fortlaufenden Schleife auf die Datei zuzugreifen... jedesmal wenns schiefläuft wieder versuchen... wenn du etwas auslesen kannst hast du geschafft.
 

Murray

Top Contributor
Die Frage war ja aber wohl weniger, wie man mit dem Problem umgeht, dass man Dateien von Java aus nicht lesen kann, während sie gerade umbenannt werden. Umgekehrt: wie verhindert man, dass andere Programme auf Schreibfehler laufen, weil das Java-Porgramm ihr Logfile liest, während das Fremdprogramm das Log-File gerade umbenennen will. Das läuft aber darauf hinaus, wie Schreiboperationen möglich sind, obwohl die Datei gerade gelesen wird. Und das wird in Java unter Windows so wohl nicht gehen.
 

dermoritz

Bekanntes Mitglied
Danke Murray genau das meinte ich. Es scheint für Windows aus meiner Sicht nur 2 Workarounds zu geben:

1. Man kennt den Umbenennalgorithmus und bendet das Lesen kurz vor der Umbenennung. Das Problem ist hier die Zeitspanne zwischen Lesestopp und wahrer Umbenennung. Falls wie in meinem Fall die Umbenennung auf Dateigröße basiert, kann diese Spanne beliebig lang sein.

2. Man verzichtet auf Aktualität und liest nur umbenannte Logdateien (leider keine Option für mich).

Hat noch irgendwer andere Ideen?
 

diel2001

Bekanntes Mitglied
Du kannst doch auch in Java folgendes machen
Java:
Process process = Runtime.getRuntime().exec("tail -f <logfile>")
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

    String temp = null;
    while ((temp = reader.readLine()) != null){
      System.out.println(temp);
    }

Somit kannst du das log überwachen und es kann gleichzeitig weiter befüllt werden
 

HoaX

Top Contributor
Du kannst doch auch in Java folgendes machen
Java:
Process process = Runtime.getRuntime().exec("tail -f <logfile>")
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

    String temp = null;
    while ((temp = reader.readLine()) != null){
      System.out.println(temp);
    }

Somit kannst du das log überwachen und es kann gleichzeitig weiter befüllt werden

Es geht nicht ums befüllen sondern ums umbenennen. Und da macht es keinen Unterschied ob nun Java oder Tail die Datei geöffnet hält.
 

Jens81

Gesperrter Benutzer
Kannst du nicht eine Kopie des Logs erstellen und auf der Datei arbeiten / diese lesen?

Dann in bestimmten Abständen die Kopie aktualisieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0
H Input/Output .txt Datei in Jar lesen Allgemeine Java-Themen 6
javampir Input/Output Effizienz beim binären Lesen einer Datei Allgemeine Java-Themen 6
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
L Input/Output Datei lesen Allgemeine Java-Themen 1
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
W Passwortgeschuetzte .mpp Datei mit MPXJ lesen Allgemeine Java-Themen 3
G Binäre Datei lesen / schreiben Allgemeine Java-Themen 9
E Apache POI-Datei lesen und umschreiben Allgemeine Java-Themen 8
T Datei lesen, bearbeiten, speichern Allgemeine Java-Themen 14
T Kann HTML Datei nicht lesen Allgemeine Java-Themen 3
F CSV-Datei aus Internet lesen Allgemeine Java-Themen 2
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
J HSSF - schreiben in und lesen aus vorhandener Datei Allgemeine Java-Themen 6
R Properties Datei aus Applikationsverzeichnis lesen Allgemeine Java-Themen 5
M Binäre Datei schreiben und lesen Allgemeine Java-Themen 4
P Datei in einen String lesen Probleme bei Codierung Allgemeine Java-Themen 2
Iron Monkey Object in Datei effizienter lesen / schreiben Allgemeine Java-Themen 13
L Lesen von Objekten aus Datei Allgemeine Java-Themen 17
D JExcelAPi -> Kann Datei nicht lesen Allgemeine Java-Themen 2
MQue XML Datei lesen Allgemeine Java-Themen 4
T Datei beim schreiben verschlüsseln beim lesen entschlüsseln Allgemeine Java-Themen 11
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
MQue Excel bzw. *.csv-Datei lesen Allgemeine Java-Themen 12
T Verzeichnisinhalt aus JAR Datei lesen Allgemeine Java-Themen 14
J Zip-Datei lesen Allgemeine Java-Themen 4
T Fehler beim Lesen von verschlüsselter xml-Datei Allgemeine Java-Themen 13
K MANIFEST.MF innerhalb einer JAR Datei lesen. Allgemeine Java-Themen 4
J ID3-taginformationen aus mp3-Datei lesen Allgemeine Java-Themen 12
V Dateien (*.jpg) aus einer Jar Datei lesen Allgemeine Java-Themen 10
G Daten aus Datei lesen Allgemeine Java-Themen 15
G Datei in JAR-File lesen Allgemeine Java-Themen 3
M Codepage Problem (Vertauscht Zeichen beim Lesen aus Datei) Allgemeine Java-Themen 3
T Datei auf WebSite lesen Allgemeine Java-Themen 4
L Aus Datei lesen mit ".getProperty": leer ? Allgemeine Java-Themen 6
J byte[] aus Datei lesen Allgemeine Java-Themen 11
J elegant aus Datei n Objekte lesen? Allgemeine Java-Themen 5
S Text aus Datei lesen und zurückschreiben Allgemeine Java-Themen 6
G HSQLDB Datenbank-Dateien aus Jar-Datei lesen Allgemeine Java-Themen 5
R Array[][] in die Datei schreiben bzw. aus der Datei lesen Allgemeine Java-Themen 13
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Jar-Datei ausführen Allgemeine Java-Themen 7
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
C Wav-Datei aus Jar laden? Allgemeine Java-Themen 11
L Best Practice Zip Datei aktualisieren Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
Hatsi09 Jar datei ausführen verursacht NumberFormatException Allgemeine Java-Themen 9
kodela bestimmten Dateityp immer mit jar-Datei öffnen Allgemeine Java-Themen 17
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
N Txt Datei auslesen. Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben