Módulo fs

O node.js inclui o módulo fs (File System) para aceder ao sistema de ficheiros do disco. O módulo fs é responsável por todas as operações de I/O assíncronas ou síncronas.

Para incluir o módulo fs, use o método require():

var fs = require('fs');

Ler um ficheiro

Use o método fs.readFile() para ler um ficheiro de forma assíncrona.
Assinatura:

fs.readFile(fileName [,options], callback)

filename: caminho completo e nome do ficheiro como uma string.

options: O parâmetro options pode ser um objeto ou string que pode incluir codificação e uma flag. A codificação de defeito é raw e a flag de defeito é “r”. Se quisermos a codificação ‘utf8’ temos de a especificar neste parâmetro.

callback: Uma função com dois parâmetros: err e data. Será chamada quando a operação readFile for concluída.

Exemplo:

var fs = require('fs'); 

fs.readFile('TestFile.txt', function (err, data) { 
   if (err) throw err; 
   console.log(data); 
}); 

O exemplo acima lê TestFile.txt (no Windows) de forma assíncrona e executa a função de callback quando a operação de leitura é concluída. Essa operação de leitura gera um erro ou é concluída com êxito. O parâmetro err contém informações de erro, se houver. O parâmetro data contém o conteúdo do ficheiro especificado.

Escrever um ficheiro

Use o método fs.writeFile() para gravar dados num ficheiro. Se o ficheiro já existir, ele substituirá o conteúdo existente, caso contrário, ele cria um novo ficheiro e grava dados nele.

Assinatura:

fs.writeFile(filename, data[, options], callback)


filename: caminho completo e nome do ficheiro como uma string.
data: o conteúdo a ser gravado no ficheiro.
options: O parâmetro options pode ser um objeto ou string que pode incluir codificação, modo e flag. A codificação de defeito é utf8 e a flag de defeito é “w”.
callback: Uma função com um parâmetro err. Será chamada quando a operação de gravação for concluída.

Exemplo:

var fs = require('fs'); 

fs.writeFile('test.txt', 'Hello World!', function (err) { 
   if (err) 
      console.log(err); 
   else    
      console.log('Write operation complete.'); 
}); 

Podemos, igualmente, acrescentar conteúdo a um ficheiro já existente com o método appendFile():

var fs = require('fs'); 

fs.appendFile('test.txt', 'Hello World!', function (err) { 
   if (err) 
      console.log(err); 
   else 
      console.log('Append operation complete.'); 
});

Abrir um ficheiro

Como alternativa, podemos abrir um arquivo para leitura ou gravação usando o método fs.open().

Assinatura:

fs.open(path, flags[, mode], callback)

path: Caminho completo com o nome do ficheiro como uma string.
flags: flags para executar a operação (ver tabela abaixo)
mode: O modo de leitura, escrita ou leitura-escrita. O padrão é 0666 leitura-escrita.
callback: Uma função com dois parâmetros err e data. Será chamada quando a operação de abertura de arquivo for concluída.


Flags:

FlagDescrição
rAbre ficheiro para leitura. Uma exceção ocorre se o ficheiro não existir.
r+Abre ficheiro para leitura e escrita. Uma exceção ocorre se o ficheiro não existir.
rsAbre ficheiro para leitura em modo síncrono.
rs+Abre ficheiro para leitura e escrita em modo síncrono.
wAbre ficheiro para escrita. O ficheiro é criado (se não existir) ou truncado (se existir).
wxComo ‘w’ mas falha se path existir.
w+Abre ficheiro para leitura e escrita. O ficheiro é criado (se não existir) ou truncado (se e or truncated (if it exists).
wx+Como ‘w+’ mas falha se path existir.
aAbre ficheiro para appending. O ficheiro é criado se não existir.
axComo ‘a’ mas falha se path existir.
a+Abre ficheiro para leitura e appending. O ficheiro é criado se não existir.
ax+Como ‘a+’ mas falha se path existir.

Exemplo:

O exemplo a seguir abre um ficheiro existente e lê seu conteúdo:

var fs = require('fs'); 
fs.open('TestFile.txt', 'r', function (err, fd) {  
   if (err) { 
      return console.error(err); 
   }
   var buffr = new Buffer(1024); 
   fs.read(fd, buffr, 0, buffr.length, 0, function (err, bytes) { 
      if (err) throw err; 
      // Mostra o bytes lidos: 
      if (bytes > 0) { 
         console.log(buffr.slice(0, bytes).toString()); 
      } 
      // Fecha o ficheiro
      fs.close(fd, function (err) { 
         if (err) throw err; 
      }); 
   }); 
}); 			
				

Eliminar um ficheiro

Use o método fs.unlink() para excluir um ficheiro existente.

Assinatura:

fs.unlink(path, callback);

Exemplo:
O exemplo a seguir elimina um ficheiro existente:

var fs = require('fs'); 

fs.unlink('test.txt', function () { 
   console.log('Ficheiro eliminado); 
});