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:
| Flag | Descrição |
| r | Abre 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. |
| rs | Abre ficheiro para leitura em modo síncrono. |
| rs+ | Abre ficheiro para leitura e escrita em modo síncrono. |
| w | Abre ficheiro para escrita. O ficheiro é criado (se não existir) ou truncado (se existir). |
| wx | Como ‘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. |
| a | Abre ficheiro para appending. O ficheiro é criado se não existir. |
| ax | Como ‘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);
});
