2017-10-20 61 views
4

我正在處理節點js中的項目,我需要獲取磁盤的文件系統類型,即,我想知道它是FAT還是NTFS等... 有沒有我可以用節點js完成這個任務嗎?任何幫助表示讚賞。謝謝。獲取節點js的文件系統類型

回答

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}`); 
}); 

這是未經測試的代碼,我真的認爲你想寫自己的片段。我不能決定這個代碼是否工作,因爲我現在沒有機會。

另外,爲什麼要檢查文件系統?

+0

那麼,有沒有其他的方式來獲得比這其他的文件系統類型?因爲我需要此代碼在窗口,Mac和Linux上運行。順便說一下,這是一個使用電子框架的跨平臺磁盤加密工具。 – Teja

+1

你可以看看有沒有一種方法可以在linux上完成它 - 如果不是爲了讓你放棄它,但是當它涉及非平凡的磁盤訪問時 - 沒有多平臺的方式。如果你想要這樣的工具 - 我認爲你應該使用其他語言。 –

+1

此外,你可以使用一些像C這樣的本地語言編寫工具來獲取linux mac和windows下的文件系統,並且在你的js代碼中,你應該只檢測操作系統並運行程序提供的有效可執行文件。 –

-1

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

然後

const drivelist = require('drivelist'); 



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

    console.log(drives); 
}); 
+1

Na na na na! OP需要知道磁盤的文件系統類型,而不是列出它們! –

+0

then - > could work - var exec = require(「child_process」)。spawn var cmd ='wmic logicaldisk get name,FileSystem'; const list = spawn(cmd); – anshuVersatile

+0

我剛剛發佈了這樣的答案 –