使用 Node.js 读取文本文件?
2022-08-30 02:10:47
我需要在终端中传入一个文本文件,然后从中读取数据,我该怎么做?
node server.js file.txt
如何从终端进入路径,如何在另一侧读取路径?
我需要在终端中传入一个文本文件,然后从中读取数据,我该怎么做?
node server.js file.txt
如何从终端进入路径,如何在另一侧读取路径?
您需要使用数组来访问命令行参数以获取文件名,并使用文件系统模块 (fs) 来读取文件。例如:process.argv
// Make sure we got a filename on the command line.
if (process.argv.length < 3) {
console.log('Usage: node ' + process.argv[1] + ' FILENAME');
process.exit(1);
}
// Read the file and print its contents.
var fs = require('fs')
, filename = process.argv[2];
fs.readFile(filename, 'utf8', function(err, data) {
if (err) throw err;
console.log('OK: ' + filename);
console.log(data)
});
为了稍微分解一下,你通常会有长度2,第0项是“节点”解释器,第一个是节点当前正在运行的脚本,之后的项目在命令行上传递。从 argv 中提取文件名后,您可以使用文件系统函数读取文件,并对其内容执行任何操作。示例用法如下所示:process.argv
$ node ./cat.js file.txt
OK: file.txt
This is file.txt!
[编辑]正如@wtfcoder提到的,使用“”方法可能不是最好的主意,因为它会在将文件全部内容提供给回调函数之前缓冲文件。这种缓冲可能会占用大量内存,但更重要的是,它没有利用node.js的核心功能之一 - 异步,事件I / O。fs.readFile()
处理大文件(或任何文件,实际上)的“节点”方法是使用fs.read()
并处理每个可用的块,因为它可以从操作系统中获得。但是,读取文件本身需要您对文件进行自己的(可能)增量解析/处理,并且一定程度的缓冲可能是不可避免的。
使用节点的 fs。
var fs = require('fs');
try {
var data = fs.readFileSync('file.txt', 'utf8');
console.log(data.toString());
} catch(e) {
console.log('Error:', e.stack);
}