268 votes

Lire un fichier en Node.js

Je suis assez perplexe avec la lecture des fichiers dans Node.js.

fs.open('./start.html', 'r', function(err, fileToRead){
    if (!err){
        fs.readFile(fileToRead, {encoding: 'utf-8'}, function(err,data){
            if (!err){
            console.log('received data: ' + data);
            response.writeHead(200, {'Content-Type': 'text/html'});
            response.write(data);
            response.end();
            }else{
                console.log(err);
            }
        });
    }else{
        console.log(err);
    }
});

Fichier start.html est dans le même répertoire que le fichier qui tente de l'ouvrir et de le lire.

Cependant, dans la console, j'obtiens :

{ [Error : ENOENT, open './start.html'] errno : 34, code : 'ENOENT', path : './start.html' }

Des idées ?

331voto

Eugene Kostrikov Points 6201

Utilisez path.join(__dirname, '/start.html') ;

var fs = require('fs'),
    path = require('path'),    
    filePath = path.join(__dirname, 'start.html');

fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
    if (!err) {
        console.log('received data: ' + data);
        response.writeHead(200, {'Content-Type': 'text/html'});
        response.write(data);
        response.end();
    } else {
        console.log(err);
    }
});

Merci à dc5.

66voto

Michael Cole Points 351

Avec Node 0.12, il est maintenant possible de le faire de manière synchrone :

  var fs = require('fs');
  var path = require('path');

  // Buffer mydata
  var BUFFER = bufferFile('../public/mydata.png');

  function bufferFile(relPath) {
    return fs.readFileSync(path.join(__dirname, relPath)); // zzzz....
  }

fs est le système de fichiers. readFileSync() renvoie un Buffer, ou une chaîne de caractères si vous voulez.

fs suppose correctement que les chemins relatifs sont un problème de sécurité. path est une solution de contournement.

Pour charger une chaîne de caractères, spécifiez l'encodage :

return fs.readFileSync(path,{ encoding: 'utf8' });

43voto

Masoud Siahkali Points 2883

1).pour ASync :

var fs = require('fs');
fs.readFile(process.cwd()+"\\text.txt", function(err,data)
            {
                if(err)
                    console.log(err)
                else
                    console.log(data.toString());
            });

2). pour la synchronisation :

var fs = require('fs');
var path = process.cwd();
var buffer = fs.readFileSync(path + "\\text.txt");
console.log(buffer.toString());

37voto

localhostdotdev Points 465

Simple synchrone avec le nœud :

let fs = require('fs')

let filename = "your-file.something"

let content = fs.readFileSync(process.cwd() + "/" + filename).toString()

console.log(content)

22voto

Gajender Singh Points 227

Exécutez ce code, il récupérera les données du fichier et les affichera dans la console.

function fileread(filename)
{            
   var contents= fs.readFileSync(filename);
   return contents;
}        
var fs =require("fs");  // file system        
var data= fileread("abc.txt");
//module.exports.say =say;
//data.say();
console.log(data.toString());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X