将 process.stdin 数字文件描述符转换为 FileHandle?

Szc*_*ski 6 node.js

如何将数字文件描述符转换process.stdinFileHandle类似返回的对象fs.promises.open()

理由:

  • 想要以统一的方式使用标准输入或命名输入文件
  • 讨厌基于数字文件描述符的统一方式(这可以通过使用来完成filehandle.fd,但是呃)

Jas*_*ger 2

至少从 19.2.0 开始,似乎没有一种稳定的方法可以FileHandle从值中获取 a 。fd这里有一个复杂的解决方法可能有效,但显然不是推荐的方法: https: //github.com/nodejs/node/issues/43821

如果你不支持 Windows,你可以这样做:

import fs from "node:fs/promises"

const inputFileHandle = await fs.open("/dev/stdin", "r")
const outputFileHandle = await fs.open("/dev/stdout", "w")
Run Code Online (Sandbox Code Playgroud)

process.stdin.fd它实际上并不使用与和相同的底层文件描述符process.stdout.fd(分别为 0 和 1),但它应该实现基本相同的效果。