我正在寻找一种独立于平台(win,mac,linux)的方法来查找文件是否可执行。以下对我不起作用(甚至不在Linux上) -
var spawn = require("child_process").spawn;
var proc = spawn("whatever file");
proc.stderr.on('data', function (data) {
if (/^execvp\(\)/.test(data)) {
console.log('Failed to start child process.');
}
});
答案 0 :(得分:1)
我建议强烈反对执行文件作为测试它是否可执行的方法。如果您不知道文件是什么,请不要只运行它!这是一场安全和一般伤害的噩梦。这类似于测试一瓶透明液体是否因饮用而中毒。
stat
在posix(linux,mac,bsd)上,使用fs.stat
然后检查mode
字段以检查各种可执行的排列。
您可以在其上运行file utility,它将使用幻数和其他启发式数据库来猜测文件类型。
就平台无关而言,AFAIK这个功能在Windows上并不太相似,因为它具有可靠的Windows等效于上述面向posix的技术。 Windows文件系统和文件类型是不同的,所以我想如果你想要它真正起作用,你需要一个单独的实现来正确处理窗口(和我以外的人建议如何在windows上实现它)。
答案 1 :(得分:0)
我使用mime-magic nodejs模块来了解文件的mime类型。