2016-05-06 215 views
3

我有一个文件夹与图像,他们可以有不同的格式,但名称将永远是唯一的。如果我知道文件的名称没有扩展名(例如,index而不是index.html),有没有办法获得文件扩展名?我可以检查文件是否存在于我希望在那里的每个扩展,但对我来说这似乎是一个不好的解决方案。Nodejs获取文件扩展名

: 我知道有图像称为PIC,但我不知道的扩展名(可能是“.PNG”,名为.jpg等)因此,我不能使用文件命令。

+1

[Node.js的可能的重复获取文件扩展](http://stackoverflow.com/questions/10865347/node-js-get-file-extension) – John

+1

我想删除国旗,但不幸的是不能。如果一个国防部可以拒绝这将是伟大的 – John

回答

3

那么,如果你正在运行基于Unix的系统,这可能是一个解决方法。

var sys = require('util') 
 
var exec = require('child_process').exec; 
 

 
function puts(error, stdout, stderr) { 
 
    console.log(stdout) 
 
} 
 

 
// this is where you should get your path/filename 
 
var filename = "login"; 
 
// execute unix command 'file' 
 
exec("file " + filename, puts);

我测试了它的PNG文件和文件EJS,既没有扩展名(你会不会让差)。 结果如下:

PNG: 照片:PNG图像数据,100×100,8-位/彩色RGB,非隔行扫描

EJS(什么基本上是一个HTML): 登录:HTML文件,ASCII文本

您可以检查文件命令行参数,使其更容易与STRI工作ng(例如文件-b文件名)。 如果使用Windows,那么您必须检查替代命令文件

希望它有某种用处。

+0

谢谢你的回答。我想我没问过我的问题,所以我更新了我的问题。 –

+0

你可以使用命令** dir **或** ls **吗?我的意思是,如果您可以使用操作系统命令,则可以根据操作系统命令(例如,ls index *或dir index *)修改在答案中剪切的代码。 – Tom

+0

这正是我一直在寻找的,谢谢! –

0

变种路径=要求( '路径')

path.extname( '的index.html') //返回 'html的'

下面是参考答案

Node.js get file extension

更新时间:

https://www.npmjs.com/package/file-extension NP m安装--save文件扩展名 允许你指定一个文件名,那么它将返回扩展名

+0

正如我的问题所述,我不知道该文件的扩展名。我只知道有一个名为'index.SOMETHING'的文件。 –

+0

$ npm install --save file-extension这里是文档https://www.npmjs.com/package/file-extension – Jamesed

0

我知道我迟到了派对,但你可以在基于Unix的系统中使用grep命令。

ie ls | grep PIC。这样做首先给出工作目录的目录列表,然后从目录列表的输出中搜索短语PIC并打印它。(所以将要打印的唯一的事情是文件名)

在Windows中,使用dir PIC.* /b

可以执行使用child_process这些命令,如图在其他的答案