我正在尝试将文件写入目录java.lang.IllegalStateException: stream has already been operated upon or closed
at java.util.stream.AbstractPipeline.<init>(AbstractPipeline.java:203)
at java.util.stream.ReferencePipeline.<init>(ReferencePipeline.java:94)
at java.util.stream.ReferencePipeline$StatelessOp.<init>(ReferencePipeline.java:618)
at java.util.stream.ReferencePipeline$3.<init>(ReferencePipeline.java:187)
at java.util.stream.ReferencePipeline.map(ReferencePipeline.java:186)
,然后使用已编写的内容流式传输zip文件。但是,当返回zip文件时,它会显示templates
,这是由于控制器中的Failed - Network Error
。如果我删除WriteFile流,那么压缩工作正常。我的问题是如何首先编写文件然后运行zip。 fs.writeFile
的归档和文件编写似乎发生了同步。
控制器:
typeArrayString
存档服务
exports.download_one_feed = function(req, res, next) {
Feed.findOne({'name': req.params.id})
.exec(function(err, dbfeeds){
if(err){
res.send('get error has occured in routes/feeds.js');
} else {
const feedArray = dbfeeds.feed.data;
// write file
// get from db collection & write file to download
const typeArrayString = JSON.stringify(feedArray);
let type = 'b'; // test only
fs.writeFile(path.join(appDir, 'templates/' + type + '/template.json'), typeArrayString, (err) => {
if (err) throw err;
console.log('Saved!');
})
archiverService.FileArchiver(feedArray, res);
}
})
};
答案 0 :(得分:0)
我使用zip.append
来覆盖目录中的旧文件,而不是编写文件然后压缩目录。