Skip to content

Latest commit

 

History

History
87 lines (54 loc) · 2.42 KB

36.trabalhando_com_path_de_arquivos_em_node.md

File metadata and controls

87 lines (54 loc) · 2.42 KB

Trabalhando com Path de arquivos em Node.js

Índice

Cada arquivo no sistema tem um caminho.

No Linux e no macOS, um caminho pode ter a seguinte aparência:

/users/joe/arquivo.txt

enquanto os computadores Windows são diferentes e possuem uma estrutura como:

C:\users\joe\arquivo.txt

Você precisa ficar atento ao usar path em suas aplicações, pois essa diferença deve ser levada em consideração.

Você inclui este módulo em seus arquivos usando

const path = require('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 uma parte do nome do arquivo.

  • extname: obtém a extensão do arquivo.

Exemplo:

const notes = '/users/joe/notes.txt';

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

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

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

Trabalhando com caminhos

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

const name = 'joe';
path.join('/', 'users', name, 'notes.txt'); // '/users/joe/notes.txt'

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

path.resolve('joe.txt'); // '/Users/joe/joe.txt' se estiver executando na pasta home

Nesse caso, o Node.js simplesmente anexará /joe.txt ao diretório de trabalho atual. Se você especificar uma segunda pasta de parâmetro, o resolve usará a primeira como base para a segunda:

path.resolve('tmp', 'joe.txt'); // '/Users/joe/tmp/joe.txt' se estiver executando da pasta home

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

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

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

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

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