Trabalhar com descritores de arquivo em Node.js

Antes que você seja capaz de interagir com um arquivo presente no seu filesystem, você deve obter um file descriptor (descritor de arquivo).

Um file descriptor é o que é retornado ao abrir um arquivo utilizando o método open() do módulo fs:

const fs = require('fs')
fs.open('/Users/pauloluan/test.txt', 'r', (err, fd) => {
// fd é o nosso file descriptor
})

Note o r que usamos como segundo parâmetro da chamada fs.open().

Essa flag significa que nós abrimos o arquivo para leitura.

Outras flags que você normalmente utilizará são:

  • r+ abre o arquivo para leitura e escrita
  • w+ abre o arquivo para leitura e escrita, posicionando a stream no início do arquivo. O arquivo é criado se não existir.
  • a abre o arquivo para escrita, posicionando a stream no fim do arquivo. O arquivo é criado se não existir.
  • a+ abre o arquivo para leitura e escrita, posicionando a stream no fim do arquivo. O arquivo é criado se não existir.

Você também pode abrir o arquivo utilizando o método fs.openSync, que retorna o file descriptor, em vez de fornecê-lo dentro de uma callback:

const fs = require('fs')
try {
const fd = fs.openSync('/Users/pauloluan/test.txt', 'r')
} catch (err) {
console.error(err)
}

Uma vez que você obtenha o file descriptor, independentemente do método escolhido, você pode fazer todas operações que o requerem, como chamar fs.open() e muitas outras operações que interagem com o filesystem.