std.fs
Datei-I/O direkt über POSIX-Systemaufrufe (sys_open, read, write, unlink, rename, lseek). Bietet Lesen (ReadFile), Schreiben (WriteFile), Anhängen (AppendFile), Löschen (DeleteFile) und Dateigröße (FileSize). Stdout/Stderr-Ausgabe (StdoutWrite, StderrWrite), Zeichenausgabe (PutChar) und Pfad-Operationen: Normalisieren, Verzeichnis, Dateiname, Erweiterung und relative Pfadauflösung.
Einsatzbereiche: Konfigurationsdateien, Log-Dateien, Binärdaten-Speicherung, Systemdienste. Für komfortablere formatierte Ausgabe bietet std.io Print-Hilfsfunktionen.
Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne
Typen
fd = int64
Dateideskriptor-Konventionen:
Konstanten
| Name | Typ | Wert | Sichtbarkeit |
|---|---|---|---|
O_RDONLY | int64 | 0 | pub |
O_WRONLY | int64 | 1 | pub |
O_RDWR | int64 | 2 | pub |
O_CREAT | int64 | 64 | pub |
O_TRUNC | int64 | 512 | pub |
O_APPEND | int64 | 1024 | pub |
O_EXCL | int64 | 128 | pub |
S_IRUSR | int64 | 256 | pub |
S_IWUSR | int64 | 128 | pub |
S_IRGRP | int64 | 32 | pub |
S_IWGRP | int64 | 16 | pub |
S_IROTH | int64 | 4 | pub |
S_IWOTH | int64 | 2 | pub |
DEFAULT_MODE | int64 | 420 | pub |
STDIN_FILENO | int64 | 0 | pub |
STDOUT_FILENO | int64 | 1 | pub |
STDERR_FILENO | int64 | 2 | pub |
SEEK_SET | int64 | 0 | pub |
SEEK_CUR | int64 | 1 | pub |
SEEK_END | int64 | 2 | pub |
Funktionen
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
IsValidFd(f: fd): bool | pub | Prüft ob Dateideskriptor gültig ist |
ReadFile(path: pchar, buf: pchar, max_len: int64): int64 | pub | Liest Dateiinhalt in Puffer ein |
WriteFile(path: pchar, buf: pchar, len: int64): int64 | pub | Schreibt Puffer vollständig in Datei |
AppendFile(path: pchar, buf: pchar, len: int64): int64 | pub | Hängt Puffer an bestehende Datei an |
DeleteFile(path: pchar): bool | pub | Löscht Datei über sys_unlink |
FileSize(path: pchar): int64 | pub | Gibt Dateigröße in Bytes zurück |
StdoutWrite(buf: pchar, len: int64): int64 | pub | Schreibt Puffer auf Standardausgabe |
StderrWrite(buf: pchar, len: int64): int64 | pub | Schreibt Puffer auf Fehlerausgabe |
PutChar(c: int64): int64 | pub | Gibt einzelnes Zeichen auf stdout aus |
PathNormalize(dest: pchar, src: pchar): pchar | pub | Normalisiert Pfad (entfernt ./ und ../) |
PathDir(dest: pchar, path: pchar): pchar | pub | Extrahiert Verzeichnisteil aus Pfad |
PathExt(dest: pchar, path: pchar): pchar | pub | Extrahiert Dateiendung aus Pfad |
PathBase(dest: pchar, path: pchar): pchar | pub | Extrahiert Dateiname ohne Verzeichnis |
PathResolve(dest: pchar, base: pchar, relative: pchar): pchar | pub | Löst relativen Pfad gegen Basispfad auf |
FileExists(path: pchar): bool | pub | Prüft ob Datei oder Verzeichnis existiert |
Rename(oldPath: pchar, newPath: pchar): bool | pub | Benennt Datei/Verzeichnis um |
FileCopy(src: pchar, dest: pchar): bool | pub | Kopiert Datei |
FileMove(src: pchar, dest: pchar): bool | pub | Verschiebt Datei (Copy + Delete) |
FileStat(path: pchar, statBuf: int64): bool | pub | Füllt stat-Struktur (128 Bytes) |
FileSizeFast(path: pchar): int64 | pub | Dateigröße via stat (kein open) |
FileModTime(path: pchar): int64 | pub | Letzte Änderungszeit als Unix-Timestamp |
FileAccessTime(path: pchar): int64 | pub | Letzter Zugriffszeitpunkt als Unix-Timestamp |
FilePerm(path: pchar): int64 | pub | Dateiberechtigungen (untere 12 Bits der st_mode) |
TmpFile(): pchar | pub | Erzeugt eindeutige Temp-Datei unter /tmp; gibt heap-alloc'd Pfad (32 Bytes) zurück — Aufrufer muss free(ptr, 32) aufrufen |
DirList(path: pchar): int64 | pub | Liest Verzeichnisinhalt; gibt Handle zurück (0 = Fehler) |
DirEntryCount(dirlist: int64): int64 | pub | Anzahl Einträge im dirlist-Handle |
DirEntryType(dirlist: int64, name: pchar, nameLen: int64): int64 | pub | DT_*-Typ nach Name (lineare Suche) |
DirEntryName(dirlist: int64, idx: int64): pchar | pub | Name des idx-ten Eintrags (0-basiert); gibt Zeiger in den Handle-Puffer zurück — nicht freigeben |
DirEntryTypeAt(dirlist: int64, idx: int64): int64 | pub | DT_*-Typ des idx-ten Eintrags; DT_UNKNOWN wenn außerhalb |
DirFree(dirlist: int64): void | pub | Gibt dirlist-Handle frei |
DirWalk(root: pchar): int64 | pub | Rekursive Verzeichnis-Traversierung; gibt Walk-Handle zurück |
DirWalkCount(result: int64): int64 | pub | Anzahl gefundener Pfade im Walk-Handle |
DirWalkPath(result: int64, index: int64, outBuf: pchar): int64 | pub | Kopiert idx-ten Pfad in outBuf; gibt Länge zurück |
DirWalkType(result: int64, index: int64): int64 | pub | DT_*-Typ des idx-ten Walk-Eintrags |
DirWalkFree(result: int64): void | pub | Gibt Walk-Handle frei |
GlobMatch(pattern: pchar, name: pchar): bool | pub | Prüft ob Name auf Wildcard-Pattern passt (*, ?) |
FileGlob(pattern: pchar): int64 | pub | Sucht Dateien nach Muster; gibt Glob-Handle zurück |
GlobCount(result: int64): int64 | pub | Anzahl Treffer im Glob-Handle |
GlobGet(result: int64, index: int64, outBuf: pchar): int64 | pub | Kopiert idx-ten Treffer-Pfad in outBuf |
GlobFree(result: int64): void | pub | Gibt Glob-Handle frei |
