我注意到对于 openSync 来说可能是个大问题,当您使用 openSync 打开文件时,您不会获得文件描述符。如果您使用异步调用打开,您只能将其作为回调的参数获取。问题是你必须有文件描述符来关闭文件!程序员可能还想对您需要文件描述符的文件执行其他操作。
在 node.js 的 fs API 中似乎有一个重大遗漏,即不提供一种方法来访问 fd 变量,如果您使用同步调用打开,则在异步模式下打开时回调返回该变量。这基本上会使同步打开对大多数应用程序不可用。
如果可以避免的话,我真的不想在以后的开发中使用异步文件打开和关闭,有什么方法可以获取 fd 变量我需要在使用同步时成功关闭文件打开?
最佳答案
除了文件描述符之外,您还能从 openFileSync 获得什么?
var fs = require('fs')
var path = require('path')
var fd = fs.openSync(path.join(process.cwd(), 'log.txt'), 'a')
fs.writeSync(fd, 'contents to append')
setTimeout(function () {
console.log('closing file now')
fs.closeSync(fd)
}, 10000)
在上面的 Node 脚本运行时运行 lsof/path/to/log.txt
并在脚本运行后再次运行 lsof/path/to/log.txt
done 显示文件正在正确关闭
也就是说,您打开文件的目的是什么?也许有更好的方法,例如针对您的具体情况进行流式传输
关于node.js - 如果使用 openSync 打开文件,如何在 node.js 中获取文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106111/