Trabalhando com os descritores de ficheiro na Node.js

Como interagir com os descritores de ficheiro usando a Node.js

Autores do Artigo

Antes de seres capaz de interagir com um ficheiro que encontra-se no teu sistema de ficheiro, deves ter um descritor de ficheiro.

Um descritor de ficheiro é uma referência à um ficheiro aberto, um número (fd, descritor de ficheiro) retornado pela abertura do ficheiro usando o método open() oferecido pelo módulo fs. Este número (fd, ou descritor de ficheiro) unicamente identifica um ficheiro aberto no sistema operacional:

Repara a opção r que usamos como segundo parâmetro para a chamada de fs.open().

Aquela opção significa que abrimos o ficheiro para leitura.

Outras opções que comummente usarás são:

OpçãoDescriçãoO ficheiro é criado se não existir
r+Esta opção abre o ficheiro para leitura e escrita
w+Esta opção abre o ficheiro para leitura e escrita e também posiciona a linha no princípio do ficheiro
aEsta opção abre o ficheiro para escrita e também posiciona a linha no final do ficheiro
a+Esta opção abre o ficheiro para leitura e escrita e e também posiciona a linha no final do ficheiro

Tu também podes abrir o ficheiro usando o método fs.openSync(), o qual retorna o descritor de ficheiro, no lugar de o fornecer em uma função de resposta:

Uma vez que tiveres o descritor de ficheiro, de qualquer maneira que escolheres, podes realizar as operações que precisares, como chamar fs.close() e muitas outras operações que interagem com o sistema de ficheiro.

Tu podes também abrir o ficheiro usando o método fsPromises.open() baseado em processa oferecido pelo módulo fs/promises.

O módulo fs/promises está disponível apenas desde a versão 14 da Node.js. Antes da versão 14, depois da versão 10, podes usar require('fs').promises para obtê-lo. Antes da versão 10, depois da versão 8, podes usar util.promisify para converter os métodos de fs em métodos baseados em promessas:

No bloco abaixo está um exemplo usando o util.promisify:

Para veres mais detalhes a respeito do módulo fs/promises, consulte a API fs/promises.