节点js中fd(文件描述符)的用途是什么?

fs.open('input.txt', 'r+', function(err, fd) { console.log(fd); if (err) { return console.error(err); } 

这里是什么fd,为什么当我打印使用console.log();

文件描述符是许多编程语言中使用的一个概念,它们表示对打开的文件的引用。

文件描述符将用于通过所有与文件系统相关的function来引用正确的文件stream。

事实上,stdout,stdin和stderr也分配了一个文件描述符,它们占用了fd 02 ,下一个空闲文件描述符的值是3.这就是为什么在你的例子中返回的值是3

请参阅维基百科了解更多背景信息。

在你的例子中, fd是传递给fs.opencallback函数的第二个参数:

  • 重要的是这是第二个参数。
  • 它的名字并不重要。

第二个参数表示一个文件描述符 ,用于访问callback中打开的文件。

例如1

 var fs = require("fs"); var fileName = "foo.txt"; fs.exists(fileName, function(exists) { if (exists) { // get information about the file fs.stat(fileName, function(error, stats) { // open the file (getting a file descriptor to it) fs.open(fileName, "r", function(error, fd) { var buffer = new Buffer(stats.size); // read its contents into buffer fs.read(fd, buffer, 0, buffer.length, null, function(error, bytesRead, buffer) { var data = buffer.toString("utf8", 0, buffer.length); console.log(data); fs.close(fd); }); }); }); } }); 

在那里,你有fdfs.open的第二个参数)传递给fs.read作为它的第一个参数,所以你可以读这个文件。


1:取自以下网页的示例: http : //www.sitepoint.com/accessing-the-file-system-in-node-js/