分类目录归档:node.js

【node】拦截process.stdout和process.stderr

由于解决这个问题花了我一些时间,所以记录一下说不定可以帮到其他人。

process.stdout是一个getter,所以我们不能用普通的替换来换掉process.stdout来拦截写入它的数据。同时,process.stdout是一个Writable Stream,所以也不能简单地直接从它里面获取写入的数据。

 

一开始我花了不少时间来研究怎么可以从这个Writable Stream里读出数据,但是这似乎太麻烦了,然后我甚至想到了利用child process来拦截数据。最后发现其实很简单,我们只要重新定义这个Getter就可以了。

这样我们就成功拦截到标准输出了,要注意,这段代码必须放在有任何输出之前,一旦在之前有了内容输出,它就没用了。

然后我们就可以自己决定怎么处理stdout了比如:

 

 

同理,process.stderr也可以这样拦截

【node】批量重命名音乐专辑内音乐文件名

这只是个便签博,方便以后再拿出来用。。

刚刚下了个LL大法的全套音乐专辑,(原谅我又盗版了),然后里面每个CD的音乐都是一如既往有编号的,不过我们放进自己播放列表的话并不需要这些编号,所以我要把它们去掉。

 

作为一个程序员,怎么能一个个手动改名呢,这简直是耻辱!

继续阅读【node】批量重命名音乐专辑内音乐文件名

node.js isFile

昨天被nodejs的 isfile 坑了一下午。

本来我是这么用的

结果没有任何返回,也没有报错。于是我就研究了一下午是不是相对路径问题,是不是系统问题什么的。。。

为什么我要这么写呢,因为API文档很简单就带过了这个内容,连个例子也没有:


 

Class: fs.Stats

fs.stat() , fs.lstat()  和 fs.fstat()  以及他们对应的同步版本返回的对象。

  • (仅在与 一起使用时合法)

由于看到了 class fs.Stats ,我第一反应就是先 new 一个出来,结果就悲剧了。后来经过不断探索,勇于发现,昂头奋进,披荆斩棘,终于从废渣信息爆满的百度里找到了 isFile 的正确用法,是这样: 


isDirectory() 和 isFile() 同理