Bestanden en directory's maken

Voltooid

Als ontwikkelaar bij Tailwind Traders gaat u op het punt om programmatisch nieuwe bestanden en mappen te maken en te verwijderen. Dit is een algemene vereiste voor Line-Of-Business-toepassingen.

Tot dusver hebt u geleerd hoe u met bestanden en directory's werkt met behulp van de fs-module. U de fs-module ook gebruiken voor het programmatisch maken, verwijderen, kopiƫren, verplaatsen of op een andere manier bewerken van bestanden en directory's op een systeem.

Mappen maken met fs.mkdir

Met de mkdir-methode kunt u directory's maken. Met de volgende methode maakt u een map met de naam newDir in de map 201.

const fs = require("fs").promises;
const path = require("path");

await fs.mkdir(path.join(__dirname, "stores", "201", "newDir"));

De bestandsstructuur /stores/201 moet al bestaan of deze methode mislukt. U kunt een optionele recursive-vlag doorgeven als de bestandsstructuur niet bestaat en als deze door de bewerking moet worden gemaakt.

await fs.mkdir(path.join(__dirname, "newDir", "stores", "201", "newDir"), {
  recursive: true
});

Controleren of directory's al bestaan

Als de map die u probeert te maken al bestaat, genereert de mkdir methode een fout. Deze situatie is niet goed omdat de fout ervoor zorgt dat uw programma plotseling stopt. Om deze situatie te voorkomen, raadt Node.js u aan om de mkdir methode in te pakken in een try/catch als u van plan bent (zoals we dat doen) om het bestand of de map te bewerken nadat u deze hebt geopend.

const pathToCreate = path.join(__dirname, "stores", "201", "newDirectory");

// create the salesTotal directory if it doesn't exist
try {
  await fs.mkdir(salesTotalsDir);
} catch {
  console.log(`${salesTotalsDir} already exists.`);
}

Bestanden maken met fs.writeFile

U kunt bestanden maken met behulp van de fs.writeFile-methode. Bij deze methode wordt een pad naar het bestand opgenomen, plus de gegevens die u naar het bestand wilt schrijven. Als het bestand al bestaat, wordt het overschreven.

Met deze code wordt bijvoorbeeld een bestand met de naam greeting.txt gemaakt met de tekst 'Hallo wereld!'.

const pathToFile = path.join(__dirname, "greeting.txt");
await fs.writeFile(pathToFile, "Hello World!");

Als u de laatste parameter weglaat, wat de gegevens zijn die naar het bestand moeten worden geschreven, schrijft Node.js 'undefined' naar het bestand. Die situatie is waarschijnlijk niet wat je ooit zou willen. Als u een leeg bestand wilt schrijven, geeft u een lege tekenreeks door. Het is nog beter om de String-functie door te geven. Hiermee bereikt u vrijwel hetzelfde resultaat, maar zonder dat er lege aanhalingstekens in de code blijven staan.

const pathToFile = path.join(__dirname, "greeting.txt");
await fs.writeFile(pathToFile, String());

In de volgende oefening gebruikt u uw kennis over het maken van bestanden en directory's om het programma uit te breiden voor het maken van een directory waarmee het totaal van alle verkoopbestanden wordt opgeslagen.