Trabalhando com os descritores de ficheiro na Node.js
Como interagir com os descritores de ficheiro usando a Node.js
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ção | Descrição | O 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 | ✅ |
a | Esta 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
.