Erstelle eine hallo.txt Datei im Projekt-Hauptverzeichnis mit folgendem Inhalt:
Hallo Welt!
Ebenfalls im Hauptverzeichnis eine lesen.ts Datei für das Auslesen der Textdatei erstellen:
const dateiname = "hallo.txt"
const datei = await Deno.open(dateiname);
await Deno.copy(datei, Deno.stdout);
datei.close();
Das Programm wird im Terminal aufgerufen:
deno run --allow-read lesen.ts
Der Inhalt der Textdatei wird nun in der Konsole ausgegeben.
Damit Deno Zugriff auf das Dateisystem erhält ist die Eingabe von –allow-read zwingend erforderlich. Andernfalls wird das Programm mit einem entsprechendem Hinweis abgebrochen. Das explizite Erlauben von kritischen Operationen ist ein Kernkonzept von Deno. Anstatt zu sagen was ein Deno Programm nicht darf, muss ausdrücklich gesagt werden was es darf. Dieses Vorgehen („White-Listing“) gewährleistet mehr Sicherheit.
const datei = await Deno.open(dateiname);
Mit open wird die Datei geöffnet, gelesen und eine Instanz von Deno.File an die Konstante datei übergeben.
Dass bei Deno ein await Befehl nicht innerhalb einer async – Funktion stehen muss (wie bei JavaScript üblich) ist eine weitere Besonderheit von Deno, welche das Programmieren vereinfacht. Await wird auf oberster Programmebene unterstützt – ohne dass es in eine async Funktion eingebettet werden muss.
await Deno.copy(datei, Deno.stdout);
Die copy Funktion wird in dem Beispiel verwendet, um die aus der Datei eingelesenen Daten in den Deno Output Stream zu übertragen.
datei.close();
Nachdem eine Datei geöffnet wurde und nicht mehr benötigt wird, sollte sie geschlossen werden. Andernfalls riskiert man eine Überfrachtung des Speichers.
Textdateien (wie z.B. .txt oder auch .json Dateien) lassen sich mit readTextFile() und readTextFileSync() aus der Deno Standart-Bibliothek auslesen:
//Datei lesen.ts
async function textdateiLesen(pfad:string){
const data = await Deno.readTextFile(pfad);
console.log(data);
}
await textdateiLesen("./mitglieder.json");
/**
* Aufruf:
* deno run --allow-read lesen.ts
*
* Output:
* [
* {"id": 1, "name": "Johanna"},
* {"id": 2, "name": "Jonas"}
* ]
*/
Für readTextFile() ist der Einsatz von await notwendig, da die Methode asynchroner Natur ist. Im Gegensatz dazu arbeitet readTextFileSync() synchron:
function textdateiLesen(pfad:string){
const data = Deno.readTextFileSync(pfad);
console.log(data);
}
textdateiLesen("./mitglieder.json");