Node.js路径输入时如何实现用户输入单反斜杠无需替换为双反斜杠
实现方案
你遇到的问题本质是手动处理路径分隔符导致的转义冲突,直接用Node.js内置的path模块处理路径即可解决,不需要用户手动修改输入的路径格式,操作步骤如下:
- 第一步:在代码顶部引入path模块
const path = require('path');
- 第二步:替换路径拼接逻辑,将原有代码中手动拼接路径的行:
let add=folderAddress+'\\\\'+allFiles[j];
替换为path模块的拼接方法:
let add = path.join(folderAddress, allFiles[j]);
path.join会自动适配Windows、macOS、Linux等不同系统的路径分隔符,Windows下会自动插入单反斜杠,不需要手动写转义字符。
- 第三步:用户输入的路径无需做任何额外处理,
prompt获取的用户输入中单反斜杠会被识别为普通字符,不会触发转义逻辑。
修改完成后,用户直接输入F:\JAVA Books\java topics pdf即可被程序正常识别,不需要替换反斜杠。
可选优化:你代码中硬编码的本地路径也可以用
path.join拼接,避免手动写双反斜杠的问题,比如示例中的Demo.html路径可以写成path.join('C:','Users','bagde','Desktop','JavaScriptPractice','Demo.html')
以下是修改后的完整代码:
const path = require('path'); const folderAddress=prompt('Enter Folder Address= '); const tags=prompt('Enter tags= '); let Assets=tags.split(','); let allAssets=(Object.values(Assets)); //console.log('Assets list= '+allAssets); const files=getAllFiles(folderAddress); let allFiles=Object.values(files); //console.log('file list= '+allFiles); let ourFile=path.join('C:','Users','bagde','Desktop','JavaScriptPractice','Demo.html'); fs.writeFile(ourFile,' ',function(err){}); // this line will removing all thing in demo.html let htm=getFileData(path.join('C:','Users','bagde','Desktop','JavaScriptPractice','index.html')); writeIntoFile(ourFile,htm); for(let i=0;i<allAssets.length;i++){ let count=0; let f=0; for(let j=0;j<allFiles.length;j++){ let add=path.join(folderAddress, allFiles[j]); let data=getFileData(add); // console.log('Complete address= '+add); let pCount=countOccurences(data,allAssets[i]); if(pCount>0){ f++; } count+=pCount; } console.log(allAssets[i]+" - Found "+count+" occurrence in "+f+" files"); fs.appendFile(ourFile,'<tr><td>808Ab</td><td>dummy data</td><td>'+allAssets[i]+'</td><td>dummy data</td><td> Found '+count+' occurrence in '+f+' files </td></tr>',function(err){}); }
内容的提问来源于stack exchange,提问作者Souvik Guha
相关产品推荐
相关产品推荐

