Loading...
 

Crystal Files

Dateien in Crystal


Neue Datei erstellen

Textdatei erstellen


Dateien im Textformat sind dazu da, den Inhalt für den Menschen lesbar darzustellen. Neben den 'normalen' druckbaren Zeichen gibt es aus noch Steuerzeichen wie Zeilenumbruch, Tab usw.

Der folgende Coder erzeugt die Datei 'outputfile.txt'. Sollte die Datei schon vorhanden sein, wird sie überschrieben.

file = File.new("outputfile.txt", "w+")   # erstellt die Datei "outputfile.txt" zum Lesen und Schreiben
file.print("Erste Zeile")                 # schreibt "Erste Zeile" in die erste Zeile
file.close                                # schliessen der Datei; erst jetzt ist die Datei wirklich lesbar


Um den Dateiinhalt anzuzeigen kann man bei Linux in der Kommandozeile folgendes eingeben

cat outputfile.txt

Binärdatei erstellen


Dateien im Binärformat werden dazu benutzt beliebige Bitmuster abzuspeichern. Will man sich den Inhalt einer solchen Datei manuell ansehen, benutzt man üblicherweise einen sog. Hex-Editor. HxD ist ein solider Freeware Editor (Herstellerseite).

Bei dem kleinen Beispiel handelt es sich um beliebiege Daten. Der angegebene Header ist für eine gültige Datei von keiner Bedeutung. Es soll nur verdeutlicht werden, wie die Bytes in der Datei aneinandergereit werden. Wer genau hinschaut, wird feststellen, dass die UInt32 Angabe in der Datei vom niedriegsten zum höchstwertigsten Byte geschrieben wurde.

# Header belegen
header = 0x76543210_u32

# Array anlegen
arr = [] of UInt8 
arr << 0xFF
arr << 0x0A
arr << 0x01
arr << 0xFE
arr << 0x04
arr << 0x10

# Funktion zum Schreiben aufrufen
write_file(header, arr)

# Funktion zum Schreiben der Binärdatei
def write_file(header, arr)
    # Datei anlegen
    file = File.new("testfile.bin", "wb")
    
    # Header schreiben
    file.write_bytes(header)

    # Das Array schreiben
    xi = 0
    while xi < arr.size
        file.write_bytes(arr[xi])
        xi += 1
    end

    # Datei schliessen
    file.close
end

Dateiinhalt mit einem Hexeditor ausgelesen:
10 32 54 76 FF 0A 01 FE 04 10



Weiterführende Informationen

Crystal-Lang Doku