我的文件夹中有以下文件:
现在,这些文件大多数都是JS文件,如果您可以看到有一堆以.
开头且略有褪色的文件,则这些文件的扩展名也为.js
。如果我在文本编辑器中打开这些文件中的任何一个,则会看到以下内容:
如您所见,消息说文件无法打开,因为它可能很大或者是二进制文件(我怀疑这是因为文件很大,因为当我在浏览器中打开该文件时,我看到的只是一堆文件特殊字符,看起来根本就不像JS文件..见下文)。
以下是我在浏览器中打开JS文件时看到的内容:
现在在我的express应用程序中,我有几行代码基本上可以美化文件(如果扩展名为.js的文件),代码看起来像这样:
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是否是更好的解决方案,因此我也乐于接受与该解决方案相适应的答案。