Node.js学习笔记--文件简单操作

Posted Jacklovely

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js学习笔记--文件简单操作相关的知识,希望对你有一定的参考价值。

说明(2017-5-3 11:53:45):

1. foo.js

 1 var fs = require("fs");
 2 var documents = [];
 3 fs.readdir("./段虹",function(err,files){
 4     
 5     for(let i = 0; i < files.length; i++){
 6         // var filename = files[i];
 7         fs.stat("./段虹/" + files[i], function(err, stats){
 8             if(stats.isDirectory()){
 9                 documents.push(files[i]);
10             }
11             // 异步的,循环语句还没执行完,就输出了,所以不能放在外面!!
12             console.log(documents);
13         });
14     }
15 });

注意:

1. fs模块,readdir读取文件夹,文件夹最好用“./xxx”的形式,与linux统一。readdir里面有一个回调函数,参数files是此文件夹里的所有文件、文件夹的名字,但不包括子文件夹。

2. 遍历此文件夹,同fs.stat判断files里的文件是不是文件夹,如果是,就push到documents这个数组里。

3. 因为异步执行,console.log()不能放到外面,不然循环还没执行完,就先输出了。

4. 同时,for循环里最初用var i = 0的时候,输出的都是同一个文件夹的名字,这里应该是闭包的问题,其实也是异步,先执行完for循环,再输出文件名,i已经是最大值了,所以输出都一样。在这里,将var改成let。

5. 但是开始不能var filename = files[i],不然就跟用var一样了,不知为何。

以上是关于Node.js学习笔记--文件简单操作的主要内容,如果未能解决你的问题,请参考以下文章

「Node学习笔记」浅谈Node.js读写xlsx文件

Nodejs学习笔记

文件系统(node.js学习笔记)

Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

「Node学习笔记」Node.js的模块实现及编译

Node.js学习笔记--一个最简单的服务器请求