javascript - 读取提取数据javascript
问题描述
我正在开发一个节点 js 项目。我有一个要提取的 zip 文件,然后我读取了提取的 zip 中的一个文件。我遇到的问题是,即使我在回调中调用它的 readfile 函数之前对提取函数进行了编码。我总是没有这样的文件或目录错误,例如在提取之前传递了读取文件。帮助!
这是我的代码
var unzip = require('unzip');
const fs = require('fs');
var stream = fs.createReadStream(zipFilePath).pipe(unzip.Extract({ path: 'files/em' }));
stream.on('finish', function () {
fs.readFileSync('files/em/data.json') ;//read the extracted file but always the extraction passed after this
});
解决方案
你没有观察到正确的事件。在解压缩过程发生之前触发的'finish'
事件。createReadStream()
相反,您应该听'close'
解压缩过程的事件以确保提取完成。
const unzip = require('unzip');
const fs = require('fs');
const zipFilePath = 'files/data.zip'
let extract = unzip.Extract({ path: 'files/em' })
let stream = fs.createReadStream(zipFilePath).pipe(extract);
extract.on('close', () => {
let data = fs.readFileSync('files/em/data.json') ;
console.log(data.toString()) // print your unziped json file
})
推荐阅读
- javascript - 在 .js 中提交之前加密 HTML 表单(在 jsp 中)
- jenkins - Jenkins 管道 - 全局(非环境)属性
- asp.net-mvc - 成功部署后,“对象引用未设置为对象的实例”。ASP.NET MVC
- javascript - 如何删除重复项但保留 Google 脚本中的原始值
- grails - 如何更改 Grails spring-security-ldap:2.0.1 插件以使用自定义的 AuthoritiesPopulator?
- angularjs - ng-options 不显示或链接对象
- plotly - Plotly.js:锁定 y 轴以避免负值
- python - 子数据帧的子数据帧
- jquery - Wicket 6 - 自定义 JQuery 插件导致 StalePageException
- linux - 如何在linux中安装旧版本的dotnet版本