Node.js para iniciantes: o básico do trabalho com arquivos

Hoje falaremos sobre como trabalhar com o sistema de arquivos usando o Node.js, considere as operações básicas executadas com os arquivos. Tais operações incluem o seguinte:

  • Criação de arquivo
  • Ler arquivo
  • Gravando dados em um arquivo
  • Exclusão de arquivo
  • Renomear arquivo

A necessidade de executar essas operações surge em uma variedade de situações.



Módulo FS


O Node.js possui um módulo padrão, fs (abreviação de File System), que fornece ferramentas de desenvolvedor para trabalhar com o sistema de arquivos. Você pode importá-lo para o projeto da seguinte maneira:

 var fs = require('fs'); 

Os métodos deste módulo são apresentados em formas síncronas e assíncronas. As funções de retorno de chamada transmitidas para métodos assíncronos aceitam o objeto de erro como o primeiro parâmetro e os dados retornados quando a operação foi bem-sucedida como o segundo parâmetro. Considere um exemplo:

 function fileHandler(){   fs.readFile('textFile.txt', 'utf8', (err, data) => {       if(err) throw err;       console.log(data);   }); } 

O método .readFile() , sobre o qual falaremos mais, destina-se à leitura de arquivos. Neste exemplo, a função de retorno de chamada possui dois parâmetros - err e data . Os erros que podem ocorrer ao tentar ler um arquivo caem no primeiro parâmetro; os dados obtidos após uma operação bem-sucedida estão no segundo parâmetro. Observe que .readFile() é um método assíncrono do módulo fs . Sua versão síncrona é chamada .readFileSync() . Uma abordagem semelhante é usada para nomear outros métodos de módulo.

Crie um novo arquivo


Vamos começar com um exemplo:

 function fileHandler(){   fs.open('testFile.txt', 'w', (err) => {       if(err) throw err;       console.log('File created');   });  } 

Aqui, o método fs.open() é usado para criar um novo arquivo. Leva um nome de arquivo como o primeiro argumento. Seu segundo argumento é uma bandeira que diz ao sistema exatamente o que queremos fazer com o arquivo. Nesse caso, esse é o sinalizador w (abreviação de escrita), que indica que queremos abrir o arquivo para gravação. O método .open() pode aceitar vários sinalizadores. Aqui estão alguns deles:

  1. r : abrir arquivo para leitura
  2. r+ : arquivo aberto para leitura e gravação
  3. rs : arquivo aberto para leitura no modo síncrono
  4. w : abrir arquivo para gravação
  5. a : abrir arquivo para gravar dados no final do arquivo
  6. a+ : abra o arquivo para ler e gravar dados no final do arquivo

Agora, antes de passar para o próximo exemplo, editaremos o arquivo testFile.txt recém-criado usando algum tipo de editor de texto. Adicione o seguinte texto a ele:

 This is a test file. We're learning about Node.js File System. The End. 

Gravando dados em um arquivo


Vamos falar sobre como adicionar algo a um arquivo:

 function fileHandler(){   fs.appendFile('testFile.txt', ' This line is beyond the end.', (err) => {       if(err) throw err;       console.log('Data has been added!');   }); } 

Aqui usamos o método .appendFile() para acrescentar dados ao final de um arquivo existente. Como primeiro argumento, esse método aceita o nome do arquivo, como o segundo - os dados que precisam ser adicionados ao final do arquivo. O terceiro argumento é, como sempre, uma função de retorno de chamada.

Depois que o código mostrado acima for executado com êxito, o conteúdo do arquivo ficará assim:

 This is a test file. We're learning about Node.js File System. The End. This line is beyond the end. 

Há outra maneira de gravar dados em um arquivo. Isso implica o uso do método .writeFile() . Este método é muito semelhante ao .appendFile() , mas tem uma diferença importante. O fato é que, usando o método .appendFile() , adicionamos novos dados ao arquivo após os dados que já estão nele. E ao usar o método .writeFile() , o conteúdo do arquivo é substituído por um novo. Vamos tentar este método:

 function fileHandler(){   fs.writeFile('testFile.txt', "I'm the replacement you've been looking for.", (err) => {       if(err) throw err;       console.log('Data has been replaced!');   }); } 

Após uma operação bem-sucedida, o arquivo conterá o seguinte texto:

 I'm the replacement you've been looking for. 

Como você pode ver, o conteúdo do arquivo é completamente substituído por um novo.

Ler arquivo


Para ler arquivos, o módulo fs fornece o método .readFile() , um exemplo do uso que já vimos. Leva o nome do arquivo como o primeiro parâmetro e a codificação como o segundo. O terceiro parâmetro é a função de retorno de chamada. Vamos tentar imprimir o conteúdo do arquivo testFile.txt no console usando este método:

 function fileHandler(){   fs.readFile('testFile.txt', 'utf8', (err, data) => {       if(err) throw err;       console.log('--------- [File Data] ---------');       console.log(data);       console.log('--------- [File Data] ---------');   }); } 

É o que temos.


Arquivo de saída de dados para o console

Agora vamos falar sobre renomear arquivos.

Renomear arquivo


Para renomear arquivos, use o método .rename() :

 function fileHandler(){   fs.rename('testFile.txt', 'newTestFile.txt', (err) => {       if(err) throw err;       console.log('File renamed successfully!');   }); } 

O primeiro argumento do método é o nome de um arquivo existente, o segundo é o novo nome desse arquivo. Após uma chamada bem-sucedida para esse método, o arquivo testFile.txt transforma em newTestFile.txt .

Exclusão de arquivo


Para excluir arquivos, use o método .unlink() :

 function fileHandler(){   fs.unlink('newTestFile.txt', (err) => {       if(err) throw err;       console.log('File deleted successfully!');   }); } 

Uma chamada bem-sucedida para esse método exclui o arquivo newTestFile.txt .

Sumário


Neste artigo, examinamos os conceitos básicos de trabalho com o sistema de arquivos no Node.js. Se você deseja dominar este tópico mais profundamente, consulte este material no ciclo de publicação do Node.js., leia a documentação do módulo fs e tente experimentar tudo o que aprender na prática.

Caros leitores! Você usa o módulo fs padrão ou algo mais para trabalhar com arquivos no Node.js.

Source: https://habr.com/ru/post/pt452566/


All Articles