Skip to content

Caminhos de Arquivos no Node.js

Caminhos de Arquivos do Sistema

Todo arquivo no sistema possui um caminho. Em Linux e macOS, um caminho pode ser parecido com: /users/joe/file.txt

enquanto computadores Windows possuem uma estrutura diferente, como: C:\users\joe\file.txt

Você precisa prestar atenção ao usar caminhos em seus aplicativos, pois essa diferença deve ser levada em consideração.

Usando o Módulo path

Você inclui este módulo em seus arquivos usando:

javascript
const path = require('node:path')

e você pode começar a usar seus métodos.

Obtendo Informações de um Caminho

Dado um caminho, você pode extrair informações dele usando esses métodos:

  • dirname: obtém a pasta pai de um arquivo
  • basename: obtém a parte do nome do arquivo
  • extname: obtém a extensão do arquivo

Exemplo

javascript
const path = require('node:path')
const notes = '/users/joe/notes.txt'

path.dirname(notes) // /users/joe
path.extname(notes) // .txt
javascript
import path from 'node:path'
const notes = '/users/joe/notes.txt'

path.dirname(notes) // /users/joe
path.extname(notes) // .txt

Você pode obter o nome do arquivo sem a extensão especificando um segundo argumento para basename:

javascript
path.basename(notes, path.extname(notes)) // notes

Trabalhando com Caminhos

Você pode juntar duas ou mais partes de um caminho usando path.join():

javascript
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txt

Você pode obter o cálculo do caminho absoluto de um caminho relativo usando path.resolve():

javascript
path.resolve('joe.txt') // /Users/joe/joe.txt se executado da minha pasta home
path.resolve('tmp', 'joe.txt') // /Users/joe/tmp/joe.txt se executado da minha pasta home

Neste caso, o Node.js simplesmente anexará /joe.txt ao diretório de trabalho atual. Se você especificar um segundo parâmetro como uma pasta, resolve usará o primeiro como base para o segundo.

Se o primeiro parâmetro começar com uma barra, isso significa que é um caminho absoluto:

javascript
path.resolve('/etc', 'joe.txt') // /etc/joe.txt

path.normalize() é outra função útil que tentará calcular o caminho real quando ele contiver especificadores relativos como . ou .., ou barras duplas:

javascript
path.normalize('/users/joe/../test.txt') // /users/test.txt

Nem resolve nem normalize verificarão se o caminho existe. Eles apenas calculam um caminho com base nas informações que receberam.