如何在扩展名为.js的nodejs中识别二进制文件?

时间:2018-12-14 12:40:25

标签: javascript node.js

我的文件夹中有以下文件:

enter image description here

现在,这些文件大多数都是JS文件,如果您可以看到有一堆以.开头且略有褪色的文件,则这些文件的扩展名也为.js。如果我在文本编辑器中打开这些文件中的任何一个,则会看到以下内容:

enter image description here

如您所见,消息说文件无法打开,因为它可能很大或者是二进制文件(我怀疑这是因为文件很大,因为当我在浏览器中打开该文件时,我看到的只是一堆文件特殊字符,看起来根本就不像JS文件..见下文)。

以下是我在浏览器中打开JS文件时看到的内容:

现在在我的express应用程序中,我有几行代码基本上可以美化文件(如果扩展名为.js的文件)​​,代码看起来像这样:

enter image description here

data = fs.readFileSync( path_Url , 'utf8', ),
js_beautified_content = beautify( data, { indent_size: 2, space_in_empty_paren: true });

console.log( 'PATH URL IS ' + path_Url );

fs.writeFileSync( path_Url , js_beautified_content , 'utf8');

data = fs.readFileSync( path_Url , 'utf-8' );  

当然,上面的代码位于forEach循环及其所有Syncronious内,但是当for循环遇到这些二进制文件之一时,我的应用程序将引发错误,如下所示:

  

{错误:EPERM:不允许操作,请打开   'C:\ Users \ gautam.fonseca \ Desktop \ isales_to_veeva_V1 \ VEEVA_CONVERTED \ converted_to_   veeva \ demo_EZE_MIX_One_Step_Target01 \ assets \ js._jquery.mobile-1.2.0.2.js'       在Object.fs.openSync(fs.js:646:18)       在Object.fs.writeFileSync(fs.js:1291:33)       在replaceContaint(C:\ Users \ gautam.fonseca \ Desktop \ isales_to_veeva_V1 \ isales_to_veeva_V1 \ routes \ index.js:305:20)       在C:\ Users \ gautam.fonseca \ Desktop \ isales_to_veeva_V1 \ isales_to_veeva_V1 \ routes \ index.js:273:13       在Array.forEach()       在isalesToVeevaSanitization(C:\ Users \ gautam.fonseca \ Desktop \ isales_to_veeva_V1 \ isales_to_veeva_V1 \ routes \ index.js:257:11)

at C:\Users\gautam.fonseca\Desktop\isales_to_veeva_V1\isales_to_veeva_V1\routes\index.js:271:13

我该如何规避?当我遇到这些二进制文件之一并识别它们时,该怎么办?

PS 当前,我正在考虑将我的代码包装在try catch块中,但是我希望能得到一种解决方案,该解决方案可以识别无法读取的文件或可以读取的二进制文件。不被阅读。不过,我不确定try catch是否是更好的解决方案,因此我也乐于接受与该解决方案相适应的答案。

0 个答案:

没有答案