《NodeJS开发教程2-文件系统》

NodeJS语言同其它语言一样也提供了文件操作相关的API,我们通过文件系统做一些小实例,以此来对NodeJS有一个大致的了解。
NodeJS文件系统包含两大类的API方法,即异步文件操作同步文件操作

以下是常用的文件操作API:

新建一个lession_fs.js文件:

1.读取文件

var fs=require("fs");//首先引入需要的文件模块
/*异步读取*/
console.log("开始异步读取bookinfo.txt");
fs.readFile("bookinfo.txt",function(err,data)
{
    if(err)
    {
        return console.error(err);
    }
    console.log("异步读取文件内容: " +data.toString());
});
/*同步读取*/
var buffer=fs.readFileSync("bookinfo.txt");
console.log("开始同步读取bookinfo.txt"+buffer);

打开cmd使用node执行lession_fs.js文件,命令: node lession_fs.js
(如果对开发环境搭建不是很清楚的请参考我的另一篇文章:https://www.jianshu.com/p/67bb37ff7db7
你会发现"开始同步读取bookinfo.txt...."要优先于"开始异步读取bookinfo.txt"打印出来,这就是同步和异步读取文件的区别,异步读取有它自己的优势,关于NodeJS的异步IO之后我们会深入讲解。

2.打开文件并以字节方式读取文件

/*打开文件*/
//方法原型:   fs.open(path, flags[, mode], callback)
fs.open("./lession_dir_temp/fs_write.txt","r",function(err,fd)
{
    if (err) {
        return console.error(err);
    }
    console.log("打开文件成功。");

    var buf = new Buffer(1024);//分配缓冲区
    //开始读取字节
    //方法原型:  fs.read(fd, buffer, offset, length, position, callback)
    fs.read(fd,buf,0,buf.length,0,function(err,bytes)
    {
        if(err)
        {
            fs.closeSync(fd);//关闭文件
            return console.log(err);
        }
        console.log("读取的字节长度:"+bytes);

        // 仅输出读取的字节
        if(bytes > 0){
            console.log("打开文件后读取的buff内容:"+buf.slice(0, bytes).toString());
        }
        fs.closeSync(fd);//关闭文件
    });
});

具体API参数请参考:http://www.runoob.com/nodejs/nodejs-fs.html查阅

3.创建目录、创建文件

/*创建目录*/
if(!fs.existsSync("./lession_dir_temp/fs_write.txt"))//判断要创建的文件是否存在
{
    fs.mkdir("./lession_dir_temp",function(err)//异步创建目录
    {
        if (err) {
            return console.error(err);
        }
        console.log("lession_dir_temp目录创建成功。");

        /*写入文件*/
        fs.writeFile("./lession_dir_temp/fs_write.txt","我是被写入的数据",function(err,)
        {
            if(err)
            {
                return console.error(err);
            }
            console.log("写入文件成功!");
        });
    });
}

4.删除文件、删除目录

/*删除文件(注意:删除目录前先删除文件)*/
fs.unlink("./lession_dir_temp/fs_write.txt",function(err)
{
    if (err) {
        return console.error(err);
    }
    console.log("/lession_dir_temp/fs_write.txt删除文件成功。");
    /*删除目录*/
    fs.rmdir("./lession_dir_temp/",function(err)
    {
        if (err) {
            return console.error(err);
        }
        console.log("/lession_dir_temp删除目录成功。");
    });
});

5.获取文件信息

/*获取文件信息*/
fs.stat("./lession_dir_temp/fs_write.txt", function (err, stats) {
    if(err)
    {
        return console.log(err);
    }
    console.log(stats);
    console.log("读取文件信息成功!");
    // 检测文件类型
    console.log("是否为文件(isFile) ? " + stats.isFile());
    console.log("是否为目录(isDirectory) ? " + stats.isDirectory());
});

以上获取文件信息方法会打印如下:

Stats {
    dev: 907620003,
        mode: 33206,
        nlink: 1,
        uid: 0,
        gid: 0,
        rdev: 0,
        blksize: undefined,
        ino: 11258999069215584,
        size: 24,
        blocks: undefined,
        atimeMs: 1523370240515.4707,
        mtimeMs: 1523370240535.473,
        ctimeMs: 1523370240535.473,
        birthtimeMs: 1523370240515.4707,
        atime: 2018-04-10T14:24:00.515Z,
        mtime: 2018-04-10T14:24:00.535Z,
        ctime: 2018-04-10T14:24:00.535Z,
        birthtime: 2018-04-10T14:24:00.515Z }
读取文件信息成功!
是否为文件(isFile) ? true
是否为目录(isDirectory) ? false

以上是NodeJS为我们提供的部分API使用示例展示,如果想了解更多请查阅 http://www.runoob.com/nodejs/nodejs-fs.html

接着我们使用NodeJS去完成一个小实例:《递归遍历你的某个磁盘目录》并对改目录下的所有文件进行按文件大小排序统计。
未完待续。。。

前期我们先零零散散的掌握一些NodeJS的基本使用,对它有个平缓的入门,慢慢深入学习并掌握它的工程化架构。每天进步一点点~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容