Kurz und bündig:
Wie kann ich den Inhalt einer Text Datei beeinflussen, inklusive Zeilenumbrüchen?
Mit dem RGSS-internen File.open bekomme ich das nämlich nicht hin.
Mit dieser Zeile:
Kannst du die Datei "DATANAME.txt" im Spieleordner erstellen, mit der Angabe "wb" sagst du aus, dass du in die Datei schreiben willst "w == write" und zwar binäreinträge "b == binary".
Über diese Zeile:
lässt du den String "sometext" in die Datei "somefile" schreiben welche du natürlich vorher über die oben angegebene Zeile hast öffnen müssen.
Einen Zeilenumbruch machst du folgendermaßen:
Der String "\r\n" bedeutet nämlich einen Zeilenumbruch, du kannst diesen auch an das Ende eines Textes anhängen, zum Beispiel:
Am Ende ist es wichtig, dass du die Datei auch wieder schließt:
Hier ein kleines Beispiel:
Diese Funktion würde eine Textdatei im Ordner des Spieles erstellen mit Namen "Settings" welche usereigene Menüeinstellungen speichert.
Ich habe das ganze der Übersichtswegen in dieser Form geschrieben, man könnte natürlich auch folgendes tun:
Das Ergebnis wäre das gleiche.
Das Ergebniss würde ungefähr so aussehen:
Zitat
Game Settings
fullscreen = 1
...
Falls die globale Variable $fullscreen auf 1 gesetzt wäre.
Ich hoffe dies konnte einigermaßen hilfreich sein.
Noch drei Anmerkungen:
- Wenn du Textdateien bearbeiten/schreiben/lesen willst, solltest du sie nicht im binary mode öffnen. Also File.open("meine_datei", "w") statt File.open("meine_datei", "wb"). Dann sparst du dir auch das "\r\n" bei Zeilenumbrüchen und kannst ganz normal "\n" als Zeilenumbruch nutzen. Mit puts statt write werden automatisch Zeilenumbrüche gesetzt.
- Textdateien die du liest sollten in UTF-8 kodiert sein. Dateien, die du schreibst, werden automatisch UTF-8 kodiert
- Wenn du die Block-Variante von File verwendest, sparst du dir das file.close und bist auch für eventuelle Fehler abgesichert.
Zum Lesen musst du "r" statt "w" verwenden. Willst du gleichzeitig lesend und schreibend auf die Datei zugreifen, verwendest du "r+".