Werken met bestandspaden in Node.js

Voltooid

Als nieuwe ontwikkelaar bij Tailwind Traders moet u weten hoe u paden naar bestanden en mappen beheert. Als u wel veel bestanden of mappen hebt, kan het behoorlijk tijdrovend zijn om handmatig paden te maken. Node.js biedt een aantal ingebouwde constanten en hulpprogramma's om eenvoudiger bestandspaden te maken.

De huidige map bepalen met __dirname

Soms weet u niet in welke map uw programma wordt uitgevoerd. U wilt alleen dat het pad van de huidige map wordt gebruikt.

📂 stores
    📂 201
        📂 sales

Node.js toont het volledige pad naar de huidige directory via de constante __dirname.

console.log(__dirname);

Als u die code uitvoert vanuit de verkoopmap in de volgende mapstructuur, is de _dirname waarde:

/stores/201/sales

Werken met paden met padmodule

Paden vormen een onderwerp dat zo vaak langs komt, dat in Node.js speciaal een module met de naam path is opgenomen voor het werken met paden.

Net zoals de fs-module wordt de path-module met Node.js meegeleverd en hoeft u deze niet apart te installeren. U hoeft de module alleen maar bovenaan uw bestand te vermelden.

const path = require("path");

Paden koppelen met path.join

Voor de path-module wordt het concept van bestands- en mappaden gebruikt; dit zijn simpelweg tekenreeksen. Als u bijvoorbeeld het pad naar de stores/201-map wilt ophalen, kunt u hiervoor de path-module gebruiken.

const currentPath = path.join("stores", "201");
console.log(currentPath); // stores/201

const fullPath = path.join(__dirname, "stores", "201");
console.log(fullPath); // /nodejs-files/stores/201

De reden waarom u de path-module gebruikt in plaats van tekenreeksen samen te voegen, is dat uw programma op Windows of Linux kan worden uitgevoerd. De padmodule formatteert paden correct voor elk besturingssysteem waarop het wordt uitgevoerd. In het voorgaande voorbeeld wordt met path.joinstores\201 in Windows geretourneerd, met een backslash in plaats van een slash.

Bestandsnaamextensies bepalen met path.extname

De padmodule kan ook de extensie van een bestandsnaam identificeren. Als u een bestand hebt en u wilt bepalen of het een JSON-bestand is, kunt u de path.extname methode gebruiken.

console.log(path.extname("sales.json"));

De uitvoer is:

.json

Tip

Voor de path-module maakt het niet uit of items echt bestaan of niet. Paden zijn conceptueel, niet fysiek. Ze worden alleen gebruikt om tekenreeksen voor u te bouwen en te parseren.

Alles ophalen wat u over een bestand of pad moet weten

De path-module bevat veel verschillende methoden waar u verschillende bewerkingen mee kunt doen. U kunt echter de meeste informatie die u over een pad of bestand nodig hebt, ophalen met behulp van de parse-methode. Deze methode retourneert een object met: de huidige map waarin u zich bevindt, de naam van het bestand, de bestandsnaamextensie en zelfs de naam van het bestand zonder de extensie.

const currentPath = path.parse("stores/201/sales.json")
console.log(currentPath);

const fullPath = path.join(__dirname, "stores", "201", "/sales.json");
console.log(path.parse(fullPath));

Uitvoer is:

{
  root: '',
  dir: 'stores/201',
  base: 'sales.json',
  ext: '.json',
  name: 'sales'
}
{
  root: '/',
  dir: '/workspaces/node-essentials/nodejs-files/stores/201',
  base: 'sales.json',
  ext: '.json',
  name: 'sales'
}

Er zijn veel meer nuttige hulpprogrammamethoden in de padmodule , maar de methoden die hier worden uitgelegd, zijn de belangrijkste concepten die u waarschijnlijk het meest zult gebruiken. In de volgende oefening gebruikt u de path-module om paden op te stellen en .json-bestanden te identificeren.