Text in Datei schreiben

MIVA

Mitglied
Was wäre der beste Weg einen Text in eine Textdatei zu schreiben, wenn die Textdatei auf einem File-Server liegt und somit (theoretisch) mehrere Computer gleichzeitig versuchen könnten diese Textdatei zu erstellen / zu verändern?
 

mihe7

Top Contributor
Im Prinzip: man stellt sicher, dass höchstens parallel gelesen wird. Das ist aber gar nicht mal so einfach, zumindest nicht, wenn man plattformübergreifend und/oder im Netzwerk arbeitet.
 

Oneixee5

Top Contributor
Wenn die Textdatei auf einem File-Server liegt könnte der Zugriff auf das WebDAV-Protokoll beschränkt werden. So können Sperren und Versionierung ohne viel Aufwand unabhängig von Betriebs- oder Dateisystemen umgesetzt werden. Eine einfache kostenlose Option wäre: https://nextcloud.com/. Nextcloud auf einem RaspberryPi ist eine einfache und kostengünstige 24/7 Option im privaten Umfeld. Allerdings habe ich das in meinem Netzwerk abgelöst, da mir der Wartungsaufwand zu hoch ist.
Meine derzeitige Lösung ist Syncthing. Syncthing funktioniert auf allen gängigen Betriebs- und Dateisystemen inkl. Mobil-Devices.

Ansonsten kann ich @mihe7 nur zustimmen.
 

Neumi5694

Top Contributor
Auf einem lokalen System würde ich sagen: Einfach das File-Objekt während der gesamten Laufzeit offenhalten, dann hat sich das erledigt. Aber ich glaube kaum, dass das in Netzwerken funktioniert.

Eine Alternative wäre, Schreibrechte auf diese Datei nur dem Nutzer zu gewähren, der sie angelegt hat.
 

mihe7

Top Contributor
Eventuell mitm Lock-File.
Im Prinzip kann man auch einfach Dateisperren verwenden. Es spielt letztlich keine Rolle, ob ich jetzt per CREATE_NEW für ein Lock-File angebe, dass die Datei bei ihrer Erstellung nicht existieren darf oder ob ich eine exklusive Sperre für die eigenliche Datei anfordere: am Ende bin ich immer darauf angewiesen, dass Betriebssysteme, ggf. Dateisysteme, Netzwerkprotokolle und deren Implementierungen das auch entsprechend umsetzen.

Einfach das File-Objekt während der gesamten Laufzeit offenhalten, dann hat sich das erledigt
Das Öffnen einer Datei setzt keine Sperre. Unter Linux kann ich z. B. problemlos einen Reader offen halten und parallel mit einem Writer in die Datei schreiben.
 

uuu3uuu

Aktives Mitglied
@MIVA kannst du vielleicht genauer beschreiben, was du mit File-Server bzw. Netzwerkressource meinst? Das wäre sehr hilfreich.

Wenn es um FTP geht, dann sehe ich das Vorhaben als fast unmöglich an... ohne vor jedem Schreibvorgang ein Lock-File anzulegen.
 

Neumi5694

Top Contributor
Im Prinzip kann man auch einfach Dateisperren verwenden. Es spielt letztlich keine Rolle, ob ich jetzt per CREATE_NEW für ein Lock-File angebe, dass die Datei bei ihrer Erstellung nicht existieren darf oder ob ich eine exklusive Sperre für die eigenliche Datei anfordere: am Ende bin ich immer darauf angewiesen, dass Betriebssysteme, ggf. Dateisysteme, Netzwerkprotokolle und deren Implementierungen das auch entsprechend umsetzen.


Das Öffnen einer Datei setzt keine Sperre. Unter Linux kann ich z. B. problemlos einen Reader offen halten und parallel mit einem Writer in die Datei schreiben.
Unter Windows ist das so.
Hab ich letztens gemerkt, als ich den Stream direkt als Parameter an einen BufferedReader übergeben hab anstatt vorher als Variable zu öffnen. Nach dem Ende des Einlesens in der Try-With-Resource blieb die Datei blockiert, ich konnte sie nicht umbenennen. Die Lösung war, für den Stream eine eigene Variable zu definieren, die dann auch entsprechend geschlossen wurde. Ob hier in der Java16 etwas an den AutoClosables geändert wurde im Vergleich zu früheren Versionen, kann ich nicht sagen. Der Inputstream hat jedenfalls die Datei gesperrt, auch nach Ende des Auslesens (da nicht automatisch geschlossen, warum auch immer. Ich dachte immer, ein BufferedReader würde seinen Inputstream gleich mit schließen).

Meine Log-Datei halt ich auch immer offen, da kann ebenfalls während der Ausführung kein anderer was ändern.
 

mihe7

Top Contributor
Unter Windows ist das so.
Leider ist das meistens so :) Unter Windows funktioniert das - natürlich, wie könnte es anders sein? - etwas anders. Da wird keine Sperre in dem Sinn gesetzt sondern es wird angegeben, wie der Zugriff geteilt wird. Standardmäßig ist kein anderer Prozess in der Lage, die Datei zu lesen/zu schreiben. Das kann man aber über Flags FILE_SHARED_READ und FILE_SHARED_WRITE steuern, auch eine Kombination ist möglich (s. dwShareMode unter https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea#parameters)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Text Datei Daten Auslesen und Schreiben Java Basics - Anfänger-Themen 3
R Array in Text Datei schreiben Java Basics - Anfänger-Themen 2
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
K Daten in eine Text datei schreiben !!!! Java Basics - Anfänger-Themen 6
W Strings in Text-Datei schreiben Java Basics - Anfänger-Themen 5
M bunter text in datei schreiben Java Basics - Anfänger-Themen 6
L Eclipse text datei schreiben! Java Basics - Anfänger-Themen 3
T Text in Datei schreiben Java Basics - Anfänger-Themen 4
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
J Text Datei einlesen Java Basics - Anfänger-Themen 6
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
S Erste Schritte Sprachermittler - Datei öffnen, Text in TextArea, Bereinigen, Auswerten Java Basics - Anfänger-Themen 14
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
T csv datei in text datei speichern Java Basics - Anfänger-Themen 3
S aus Text Datei Instanzen erzeugen, so richtig? Java Basics - Anfänger-Themen 4
H Text Datei öffnen Java Basics - Anfänger-Themen 7
C Text-Datei fortsetzen Java Basics - Anfänger-Themen 10
Strahlungsleck Input/Output Zahlen aus Text-Datei auslesen Java Basics - Anfänger-Themen 6
B Änderung an Text-Datei Java Basics - Anfänger-Themen 5
R Text in Datei finden Java Basics - Anfänger-Themen 2
P mit java text-datei auslesen und weiter bearbeiten Java Basics - Anfänger-Themen 3
S Text aus HTML Datei in TXT Datei Java Basics - Anfänger-Themen 19
K Ein text Datei komplet ausgeben lassen. Java Basics - Anfänger-Themen 2
K Text aus einem Datei lesen , und im JTextArea ausgeben. Java Basics - Anfänger-Themen 3
W .jar datei liest text datei nicht Java Basics - Anfänger-Themen 11
W Objecte in (Text)Datei speichern Java Basics - Anfänger-Themen 3
Z Text aus externer Datei in TextArea einlesen Java Basics - Anfänger-Themen 5
bambi0815 Text Datei Stream to Char[][] Java Basics - Anfänger-Themen 7
M HTML Datei als Text rausspeichern Java Basics - Anfänger-Themen 3
J An das Ende einer Datei Text anhängen Java Basics - Anfänger-Themen 2
H Objekte aus Text-Datei wieder in ArrayList laden Java Basics - Anfänger-Themen 8
O Text von Homepage via Java auslesen und in Text Datei speich Java Basics - Anfänger-Themen 1
D Auf einem USB-Stick gespeicherte Text-Datei öffnen Java Basics - Anfänger-Themen 11
S Text datei auslesen Java Basics - Anfänger-Themen 20
P Text vor und nach dem Inhalt einer Datei einfügen Java Basics - Anfänger-Themen 3
K Text von Eingabefeld in eine txt Datei speichern Java Basics - Anfänger-Themen 2
roflomfg Text in eine lokale "*.txt-Datei" speichern Java Basics - Anfänger-Themen 9
G zeilen aus text datei löschen Java Basics - Anfänger-Themen 6
ARadauer zeilen einer text datei ermitteln Java Basics - Anfänger-Themen 6
P jar programm zeigt den text eingelesen aus datei nicht an Java Basics - Anfänger-Themen 3
L Ist eine Datei binary oder text encoded Java Basics - Anfänger-Themen 8
F Drucken einer Text Datei Java Basics - Anfänger-Themen 2
F text datei weiterschreiben Java Basics - Anfänger-Themen 8
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
D Text aus JTextField in *.txt Datei Grundlage Java Basics - Anfänger-Themen 4
E text in datei Java Basics - Anfänger-Themen 4
D Datei - Text einfügen Java Basics - Anfänger-Themen 2
D Text-Datei(en) mit der Methode read(bytes[] b) auslesen Java Basics - Anfänger-Themen 4
R Url aus einer Text Datei auslesen. Java Basics - Anfänger-Themen 4
T Text an Datei anhängen Java Basics - Anfänger-Themen 4
M Text-Datei in einem Package ausgeben lassen Java Basics - Anfänger-Themen 4
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
J Java TextArea Text bei hinzufügen makieren Java Basics - Anfänger-Themen 1
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Anklickbaren Text erzeugen Java Basics - Anfänger-Themen 2
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
J java.text.DecimalFormat Java Basics - Anfänger-Themen 5
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
S Text-To-Speech mit Java Java Basics - Anfänger-Themen 2
L Text-Adventure Java Basics - Anfänger-Themen 3
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
ruutaiokwu Ausgegebene Zeile ersetzen mit neuem Text Java Basics - Anfänger-Themen 3
tsom Erste Schritte itext Text als Block auf neue Seite Java Basics - Anfänger-Themen 0
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben