12

这让我困扰了好几天。我知道标准流重定向到 NUL 设备,但事实并非如此。node.js 在其 fs native/libuv 绑定下使用 CreateFileW。

不幸的是使用类似的东西:

require('fs').writeFileSync('NUL', 'foo')

在具有 3 个字节的 cwd 中创建一个 NUL 文件。

我尝试写入 \Device\Null,但由于我几乎是一个 *nix 头,其中一切都是文件,我实际上未能找到 \Device\Null 的工作路径。例如抛出 ENOENT 的 \\.\Device\Null。

关于如何在 Windows 下进行这项工作的任何想法?

似乎是相关的,但我无法跟踪从 lib/fs.js 到 uv/src/win/fs.c 的整个流程,以检查路径参数是否受到某种相对于绝对路径解析的影响。

4

2 回答 2

7

设备的有效路径NUL"\\\\.\\NUL",不是NUL,所以用法是:fs.writeFileSync("\\\\.\\NUL", "foo")。这个问题是针对 GitHub 上的 Node.js 提出的:https ://github.com/nodejs/node-v0.x-archive/issues/9271

由于NUL是设备,而不是文件,因此必须通过设备名称空间访问它 - 这需要放在\\.\开头(其他斜杠用于转义) - 请参阅https://msdn.microsoft.com/en-gb/library/ windows/desktop/aa365247.aspx#Win32_Device_Namespaces

There is also a simple dev-null library on NPM that can be used with streams: https://www.npmjs.com/package/dev-null (not with .writeFile though).

于 2016-04-20T13:54:51.903 回答
3

有一个很长的解决方法,比如自己编写代码。但是您可以从这里https://github.com/hanshuebner/node-hid/blob/master/src/HID.cc获取一个想法,并在 C 库上编写一个包装器。

于 2012-06-17T21:51:55.233 回答