javascript - 一个关于Node文件读写的问题,为什么fs.createWriteStream不能用了?
高洛峰
高洛峰 2017-04-11 12:30:00
[JavaScript讨论组]

前几天写的一个程序里,用了类似于这样的一段代码:

fs.createReadStream('./template/pc.ftl')
        .pipe(
            //....
        )
        .pipe(fs.createWriteStream('./template/abc.ftl'));

当时测试了很多遍,都是可以运行的
今天突然不能写了,具体表现为,abc.ftl内容为空
经测试中间的pipe是读到了文件内容的,但是一旦写文件就会为空
即使我把这段程序写成这样:

fs.createReadStream('./template/pc.ftl')
        .pipe(fs.createWriteStream('./template/abc.ftl'));

也都不行,所以应该是fs.createWriteStream的问题,
请问这是为什么呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
PHP中文网

可以试试:

fs.createReadStream('./template/pc.ftl')
.pipe(fs.createWriteStream('./template/abc.ftl'))
.on('error', function(e){
  console.error(e)
})
PHPz

我刚才测试了一下,是因为你的权限不够.所以代码也不会报错。写的文件是0B

在当前目录输入命令:la 
查看文件的权限

输入命令:who am i
查看自己用户角色和组信息

如果是权限的问题就更改node执行时候的权限就行了。

天蓬老师

因为你没有错误处理,发生了错误你也感知不到,只能通过结果判断

const readStream = fs.createReadStream(path.join(__dirname, 'xxx_read.ftl'))
const writeStream = fs.createWriteStream(path.join(__dirname, 'xxx_write.ftl'))
readStream.pipe(writeStream)
readStream.on('error', (error) => {
  console.log('readStream error', error.message);
})
writeStream.on('error', (error) => {
  console.log('writeStream error', error.message);
})

监听错误事件, 最好打到日志里面去!!!!仅供参考 希望有帮助

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号