60 votes

fichier de chargement nodejs

Je veux charger test.txt avec nodejs.

var fs = require('fs');
fs.readFile('./test.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  console.log(data);
});

Le chemin du serveur est C:\server\test\server.js . Le test.txt se trouve dans le même répertoire, mais j'obtiens cette erreur : Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'

84voto

Rob W Points 125904

Les chemins dans Node sont résolus relativement au répertoire de travail actuel. Préfixez votre chemin avec __dirname pour résoudre le chemin vers l'emplacement de votre Node script.

var fs = require('fs');
fs.readFile( __dirname + '/test.txt', function (err, data) {
  if (err) {
    throw err; 
  }
  console.log(data.toString());
});

17voto

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('../test.txt');

  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 en tant que chaîne de caractères, spécifiez l'encodage :

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

6voto

pimvdb Points 66332

Vous devez utiliser __dirname pour obtenir le nom du répertoire le fichier est situé au lieu du répertoire de travail actuel :

fs.readFile(__dirname + "/test.txt", ...);

2voto

Utilisez path y fs :

const fs = require("fs");
const pth = require("path");

Synchronisation :

let data = fs.readFileSync(pth.join(__dirname,"file.txt"));
console.log(data + "");

A-Sync :

fs.readFile(pth.join(__dirname,"file.txt"), (err, data) => {
    console.log(data + "");
});

Et que ; Si vous devez lire le fichier en continu et l'envoyer au client et que la taille du fichier n'est pas importante, vous pouvez en garder une copie :

const exp = require("express");
const app = exp();
const fs = require("fs");
const pth = require("path");

let file = "";
app.get("/file", (q, r) => {
    if (file === "")
        file = fs.readFileSync(pth.join(__dirname,"file.txt")) + "";

    r.writeHead(200, { "Content-Type": "text/plain" });
    r.write(file);
    r.end();
});

1voto

samccone Points 3426

Donc si c'est dans le même répertoire, il suffit de faire ceci

 fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)})

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