使用Node.js获取文件系统类型。

6

我正在使用Node.js开发一个项目,需要获取磁盘的文件系统类型,比如FAT或NTFS等。是否有办法在Node.js中实现这一功能?非常感谢您的帮助。

2个回答

3

由于您没有指定目标机器的操作系统,因此您可以在Windows下使用以下命令:

fsutil fsinfo volumeinfo <disk letter here>:

展示类似于以下输出的内容:

要显示类似于此输出的结果:

H:\>fsutil fsinfo volumeinfo c:

Volume Name :
Volume Serial Number : 0x4c31bcb3
Max Component Length : 255
File System Name : NTFS
Supports Case-sensitive filenames
Preserves Case of filenames
Supports Unicode in filenames
Preserves & Enforces ACL's
Supports file-based Compression
Supports Disk Quotas
Supports Sparse files
Supports Reparse Points
Supports Object Identifiers
Supports Encrypted File System
Supports Named Streams

您只需要正确解析命令输出即可。我建议您将文件系统名称存储在数组中,并在命令输出中寻找每个文件系统,但要排除第一行。这样,您就可以确定目标计算机使用的文件系统。
以下是用于在命令行中打印此命令输出的代码:
const { exec } = require('child_process');
exec('fsutil fsinfo volumeinfo c:', (err, stdout, stderr) => {
  if (err) {
    // node couldn't execute the command
    return;
  }

  // the *entire* stdout and stderr (buffered)
  console.log(`stdout: ${stdout}`);
});

这是未经测试的代码,我认为你可能想要编写自己的片段。我不能确定这段代码是否有效,因为目前没有机会进行测试。

此外,您为什么要检查使用的文件系统?


那么,除了这种方法,没有其他获取文件系统类型的方式吗?因为我需要这段代码在 Windows、Mac 和 Linux 上运行。顺便说一下,这是一个使用 Electron 框架的跨平台磁盘加密工具。 - Shiva Teja
1
你可以在Linux上查看是否有方法来实现它 - 我会留给你,但是当涉及到非平凡的磁盘访问时 - 没有跨平台的方法。如果你想要这样的工具 - 我认为你应该使用其他语言。 - Kamila Szewczyk
1
此外,您可以使用一些本地语言(如C语言)编写工具来获取Linux、Mac和Windows下的文件系统,在您的JS代码中只需检测操作系统并运行程序所提供的有效可执行文件。 - Kamila Szewczyk
检查使用的文件系统的原因之一是因为在同一操作系统上不同的stat字段支持/有意义于不同的文件系统。在Windows中,对于NTFS,ctime有意义,但是毫无用处。在Linux中,birthtime仅受几个较新的文件系统支持。 - hippietrail

-1

你可以使用github.com/resin-io-modules/drivelist

然后

const drivelist = require('drivelist');



drivelist.list((error, drives) => {
  if (error) {
    throw error;
  }

  console.log(drives);
});

然后 -> 可以工作 - - var exec = require("child_process").spawn var cmd = 'wmic logicaldisk get name, FileSystem'; const list = spawn(cmd); - anshuVersatile
我刚刚发布了这样的答案。 - Kamila Szewczyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接