Node.js 为什么fs.open返回一个数字?
我正在尝试使用node/typescript读取文件,代码如下:Node.js 为什么fs.open返回一个数字?,node.js,typescript,fs,Node.js,Typescript,Fs,我正在尝试使用node/typescript读取文件,代码如下: const openFile = util.promisify(fs.open); write(data: Buffer, index: number) { if (!checkPieceIntegrity(data, this.pieceMap[index])) { return false; } else { return openFile(this.path, "r+")
const openFile = util.promisify(fs.open);
write(data: Buffer, index: number) {
if (!checkPieceIntegrity(data, this.pieceMap[index])) {
return false;
} else {
return openFile(this.path, "r+")
.then(fd => {
const writeStream = createWriteStream(fd, {
flags: "r+",
start: index * this.pieceLength,
autoClose: true,
})
return util.promisify(writeStream.write)(data);
})
}
}
但是当我尝试使用tsc
编译时,我得到了一个错误:
类型为“number”的参数不能分配给类型为“PathLike”的参数。
关于这一行:
const writeStream=createWriteStream(fd,{
)
node.js文档说,fs.open
返回一个文件描述符,而不是一个数字,那么为什么typescript认为fd
是一个数字,我如何让它识别它是一个文件描述符?返回一个文件描述符(作为一个整数)。但是它接收一个|
作为第一个参数,而不是一个文件描述符
检查是否有接收文件描述符并允许写入文件的函数。谢谢,我想我只是被文件描述符是一个数字这一事实弄糊涂了。文件描述符代表什么?它只是磁盘上的一个位置吗?@schu34-操作系统级的文件描述符代表操作系统内部的一个数据结构,它保持关于磁盘上打开的文件的状态。C中的文件描述符是指向一个数据结构的指针,该数据结构保持操作系统级文件描述符和其他状态,如当前写入位置等。node.js中的文件描述符编号是node.js中某种表或映射的索引,它允许node.js内部获取C级文件描述符这样它就可以在上面调用C文件函数(这反过来又会得到OS级的文件描述符)并对文件执行操作。@schu34-这可能只是node.js中的一个数字,因为node.js没有一个适合它实际表示的类型。因此,他们只使用了一个抽象数字,文件操作背后的本机代码可以通过某种映射或表查找将其转换为真正的本机代码文件描述符。