Node.js中如何正确使用fs.readFileSync读取子文件夹文件?
解决Node.js读取子文件夹文件的问题
你的问题出在fs.readFileSync的参数使用错误,这个函数只接受第一个参数为文件路径,第二个参数是可选的配置项(比如编码格式),不能直接传入文件夹路径和文件名两个参数。正确的做法是把文件夹路径和文件名拼接成完整的文件路径。
另外注意原代码里漏了引入path模块,需要补上。
修正后的完整代码
var fs = require('fs') var path = require('path') // 补上path模块引入 const filesPath = path.join(__dirname, 'downloaded_files') var files = [] function getNumbersAndPin() { for (let i = 0; i < files.length; i++) { // 拼接文件夹路径和文件名,得到完整的文件路径 const fullFilePath = path.join(filesPath, files[i]) let pdffile = fs.readFileSync(fullFilePath) pdfparse(pdffile).then(function (data) { console.log(data.text.slice(-23)) }) } } setTimeout(getNumbersAndPin, 3000)
关键说明
- 路径拼接:用
path.join()处理路径可以自动适配不同操作系统的路径分隔符(Windows用\,Linux/macOS用/),避免手动拼接路径出现错误。 - fs.readFileSync参数:第一个参数必须是完整的文件路径,如果你直接传
files[i],Node.js会默认从当前脚本所在的__dirname目录下查找文件,所以之前的写法只能找到根目录下的文件,而拼接后就能定位到downloaded_files子文件夹里的文件。
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

