Article image
Valdir Alves
Valdir Alves19/04/2023 19:28
Compartilhe

Guia para o File System do Node.js

  • #JavaScript
  • #Node.js

O FS (File System) é um módulo integrado do Node.js que fornece uma API para interagir com o sistema de arquivos do computador em que o Node.js está sendo executado. Ele permite a leitura, gravação, exclusão e manipulação de arquivos e diretórios.

Com o módulo FS, é possível criar, abrir, ler, gravar e fechar arquivos, além de manipular diretórios, como criar, renomear e excluir. Ele também inclui recursos para manipulação de fluxos de dados, como a criação de fluxos de leitura e gravação.

O módulo FS é amplamente utilizado em aplicativos Node.js para tarefas que envolvem interação com o sistema de arquivos, como o armazenamento de arquivos de configuração, logs, arquivos de dados e muito mais. Ele é especialmente útil em aplicativos de servidor, como servidores da web e aplicativos de back-end, que precisam interagir com o sistema de arquivos do servidor para armazenar e recuperar dados.

Uma das tarefas mais comuns que podemos fazer com o módulo FS é ler o conteúdo de um arquivo. Neste caso utilizaremos o método fs.readFile():

image

Neste exemplo, estamos lendo o conteúdo de um arquivo de texto chamado arquivo.txt usando o método fs.readFile(). O primeiro argumento é o caminho para o arquivo que queremos ler. O segundo argumento é um objeto de opções que pode incluir uma opção para especificar a codificação de caracteres usada para ler o arquivo, neste caso utf8, que nos permitirá ler o arquivo como texto e preservar sua acentuação. Se não for especificada uma opção de codificação, o conteúdo do arquivo será retornado como um objeto Buffer em vez de uma string de texto.

O método readFile() é assíncrono, o que significa que ele não bloqueia o código enquanto lê o arquivo. Em vez disso, ele executa uma função de retorno de chamada quando a operação de leitura é concluída. Neste exemplo, a função de retorno de chamada é uma função anônima que verifica se ocorreu um erro durante a leitura. Se não houver erros, ele exibe o conteúdo do arquivo no console.

Além de ler arquivos, podemos usar o módulo FS para criar e escrever em arquivos. Aqui está um exemplo simples de como criar um arquivo e escrever conteúdo nele usando o método fs.writeFile():

image

Neste caso, estamos criando um arquivo chamado novo-arquivo.txt e escrevendo o conteúdo da variável content no arquivo usando o método fs.writeFile(). O primeiro argumento é o caminho para o arquivo que queremos criar. O segundo argumento é o conteúdo que queremos escrever no arquivo. O terceiro argumento é uma função de retorno de chamada que é executada quando a operação de gravação é concluída. Neste exemplo, estamos apenas exibindo uma mensagem no console para indicar que o arquivo foi salvo com sucesso.

Além de manipular arquivos, o módulo FS também nos permite manipular diretórios em nosso sistema de arquivos. Aqui estão algumas funções úteis que podemos usar para trabalhar com diretórios:

  • fs.mkdir() - cria um novo diretório.
  • fs.readdir() - lista os arquivos e subdiretórios em um diretório.
  • fs.rmdir() - remove um diretório vazio.
  • fs.unlink() - remove um arquivo.

Aqui está um exemplo de como criar um diretório usando o método fs.mkdir():

image

Neste exemplo, estamos criando um novo diretório chamado novo-diretorio usando o método fs.mkdir(). O primeiro argumento é o caminho para o diretório que queremos criar. O segundo argumento é uma função de retorno de chamada que é executada quando a operação de criação de diretório é concluída.

Já o método fs.readdir()  é utilizado para listar os arquivos e subdiretórios em um determinado diretório.

image

O primeiro parâmetro passado para fs.readdir() é o caminho para o diretório que queremos listar. No exemplo dado, o caminho para o diretório é "/caminho/do/diretorio". O segundo parâmetro é uma função de retorno de chamada que é executada quando a lista de arquivos é retornada. A função de retorno de chamada recebe dois argumentos: um erro (se houver) e um array de nomes de arquivos e subdiretórios.

Dentro da função de retorno de chamada, verificamos se há um erro e, se houver, lançamos uma exceção. Caso contrário, percorremos o array de nomes de arquivos e subdiretórios usando o método forEach() e imprimimos cada nome na saída padrão usando console.log(). No exemplo, estamos imprimindo cada nome de arquivo ou subdiretório em uma nova linha.

Esta função é útil para listar o conteúdo de um diretório em um sistema de arquivos.

Esta função usa o método fs.rmdir() para remover um diretório vazio.

image

O primeiro parâmetro passado para fs.rmdir() é o caminho para o diretório que queremos remover. No exemplo dado, o caminho para o diretório é "/caminho/do/diretorio". O segundo parâmetro é uma função de retorno de chamada que é executada quando o diretório é removido. A função de retorno de chamada recebe um argumento: um erro (se houver).

Dentro da função de retorno de chamada, verificamos se há um erro e, se houver, lançamos uma exceção. Caso contrário, imprimimos uma mensagem informando que o diretório foi removido com sucesso usando console.log().

Esta função é útil para remover diretórios vazios em um sistema de arquivos e pode ser usada em conjunto com as demais.

Enquanto o método fs.rmdir() remove um diretório vazio, o método fs.unlink() remove um arquivo.

image

O método fs.unlink() é usado para excluir um arquivo específico em um aplicativo Node.js. Se o arquivo não existir, o método fs.unlink() lançará um erro. 

É importante lembrar que, assim como com a função fs.rmdir(), você deve ter as permissões necessárias para excluir o arquivo e deve ter certeza de que o arquivo não está sendo usado por outros processos ou programas.

Com isso, podemos notar que todas as funções do módulo FS do Node.js, o primeiro argumento é o caminho para o arquivo ou diretório com o qual se deseja trabalhar.

O módulo FS é uma parte essencial do Node.js que nos permite interagir com o sistema de arquivos do nosso computador. Neste artigo, exploramos algumas das funções mais comuns do módulo FS, incluindo a leitura e escrita de arquivos, bem como a criação e remoção de diretórios. Com essas ferramentas em nossa caixa de ferramentas, podemos criar aplicativos Node.js poderosos que podem manipular e gerenciar arquivos e diretórios com facilidade.

O caminho pode ser absoluto ou relativo. Se o caminho for relativo, ele será resolvido em relação ao diretório de trabalho atual do Node.js. Para trabalhar com o diretório atual, pode-se usar o módulo path do Node.js para obter o caminho absoluto do diretório atual:

image

Mas isso fica para outra oportunidade…

Vamos estudar JUNTOS?

Catálogo de Cursos 

Compartilhe
Comentários (2)
Guilherme Eduardo
Guilherme Eduardo - 20/04/2023 10:29

Muito bom o seu artigo Valdir. Parabéns!!!

Marcio Junior
Marcio Junior - 19/04/2023 22:00

Excelente, obrigado pelo conhecimento!