nodejs加载文件
我想用nodejs加载test.txt。
var fs = require('fs'); fs.readFile('./test.txt', function (err, data) { if (err) { throw err; } console.log(data); });
服务器的path是C:\server\test\server.js
。 test.txt位于相同的目录,但我得到这个错误: Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'
Node中的path相对于当前工作目录解决。 使用__dirname
前缀您的path来parsing到您的节点脚本的位置的path。
var fs = require('fs'); fs.readFile( __dirname + '/test.txt', function (err, data) { if (err) { throw err; } console.log(data.toString()); });
您应该使用__dirname
来获取文件所在的目录名称,而不是当前的工作目录:
fs.readFile(__dirname + "/test.txt", ...);
使用节点0.12,现在可以同步执行此操作:
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
是文件系统。 readFileSync()返回一个缓冲区或string,如果你问。
fs
正确地假设相对path是一个安全问题。 path
是一个解决方法。
要作为string加载,请指定编码:
return fs.readFileSync(path,{ encoding: 'utf8' });
所以如果它在同一个目录下,就这样做
fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)})
如果它在同一个目录中,它应该工作。 我已经testing了相同的代码,文件名name.txt
,它工作正常:
var fs = require('fs'); fs.readFile('./test.txt', function (err, data) { if (err) { throw err; } console.log(data.toString()); });