fs.readFile(<buffer> | <integer)如何工作?=“”

时间:2019-02-01 14:59:43

标签: node.js fs

=“”

我们可以给fs.readFile一个字符串arg。表示文件路径

fs.readFile('/etc/passwd', (err, data) => {
  if (err) throw err;
  console.log(data);
});

但是我注意到offical documentation说:

fs.readFile(path[, options], callback)

path可以是Buffer或整数。然后我尝试

const fs = require('fs')

fs.readFile(1, (err, data) => {
  if (err) throw err;
  console.log(data);
});

然后抛出错误。

我真的很困惑,这个arg怎么可能是整数? 有人可以举个例子吗?

2 个答案:

答案 0 :(得分:1)

您可以传递的整数参数应该表示一个有效的文件描述符。例如,stdin通常具有文件描述符0,因此要从stdin读取“文件”,可以使用以下命令:

fs.readFile(0, (err, data) => {
  if (err) throw err;
  console.log(data);
});

您也可以使用process.stdin.fd代替0。

获取文件描述符的另一种方法是使用fs.open()

答案 1 :(得分:0)

根据官方文档:pathstringBufferURLinteger,并且参数的描述为:“文件名或文件描述符”。

  • string | Buffer | URL-path被当作文件名(类似于"/path/to/your/file"

  • integer-path被视为file descriptor

因此,如果您传递integer,NodeJS将通过文件描述符访问文件。

详细了解how NodeJS handles file descriptors