## fs

Das FsPackage-Interface bietet Funktionen zur Datei- und Verzeichnisverwaltung. Es beinhaltet folgende Methoden:

-   `configDir(): string`:
    Diese Methode gibt den Pfad zum Verzeichnis der API-Konfigurationsdatei zurück.

-   `readFile(path: string, options?: {}): string | any`:
    Diese Methode nimmt einen relativen Pfad zu einer Datei und optionale Leseoptionen entgegen und gibt den Inhalt dieser Datei zurück. Die Optionen können steuern, ob der Inhalt als Byte-Array oder als Zeichenkette zurückgegeben wird.

-   `writeFile(path: string, data: string | any): null`:
    Diese Methode nimmt einen relativen Pfad zu einer Datei und Daten entgegen und schreibt diese Daten in die Datei.

-   `stat(path: string): {}`:
    Diese Methode nimmt einen Pfad zu einer Datei oder einem Verzeichnis entgegen und gibt Informationen über diese Datei oder dieses Verzeichnis zurück.

-   `readDir(path: string): {}[]`:
    Diese Methode nimmt einen Pfad zu einem Verzeichnis entgegen und gibt eine Liste der darin enthaltenen Dateien und Verzeichnisse zurück.

-   `mkDir(path: string): void`:
    Diese Methode nimmt einen Pfad entgegen und erstellt an diesem Ort ein neues Verzeichnis.

-   `remove(path: string): void`:
    Diese Methode nimmt einen Pfad entgegen und löscht die Datei oder das leere Verzeichnis an diesem Pfad.

```ts
interface FsPackage {
    /**
     * get directory path of api config file
     *
     */
    configDir(): string

    /**
     * read a file relative to config dir and return its content
     *
     * @param path relative file path
     * @param options optional options
     */
    readFile(
        path: string,
        options?: {
            bytes: boolean // if true return []byte instead of string
        }
    ): string | any

    /**
     * write data to a file relative to config dir
     *
     * @param path relative file path
     * @param data string or []byte data
     */
    writeFile(path: string, data: string | any): null

    /**
     * stat file or directory
     *
     * @param path
     */
    stat(path: string): {
        name: string
        size: number
        isDir: boolean
        modTime: string
    }

    /**
     * list directory entries
     *
     * @param path
     */
    readDir(path: string): {
        name: string
        size: number
        isDir: boolean
        modTime: string
    }[]

    /**
     * make directory and all missing sub directories, no error if directory already exists
     *
     * @param path
     */
    mkDir(path: string): void

    /**
     * remove file or empty directory
     *
     * @param path
     */
    remove(path: string): void
}
```
