博客详情

nodejs--fs文件系统 (原创)

作者: 朝如青丝暮成雪
发布时间:2018-02-22 14:24:55  文章分类:nodejs   阅读(944)  评论(0)

nodejs中有很多重要的内置模块,如fs(文件系统、流)  、  os (操作系统)  、 http 等。

本篇介绍fs文件系统中一些常用api ,在此之前,笔者想先给读者们推荐款nodejs的IDE ——webStrom (当然你也可以使用vi或sublime)。

关于webStrom的安装这里不再赘述,棘手的在于破解,给大家推荐个网站http://idea.lanyus.com/ (在线生成intellij系统软件序列号) 


nodejs 中文api参考手册 

链接:https://pan.baidu.com/s/1cWLrY2 密码:cooe


好了,废话不多说直接上代码。 

01_fs.js 

//node中fs: 文件系统模块
//介绍下文件(夹)的 创建、删除、文件(夹)检测、重命名、文件写入及追加等。

var fs=require("fs");


//创建文件夹 ,如果文件夹已存在则抛出异常。一次只能创建一个层次目录,不能同时创建多层次的目录
//如果err为空 说明目录创建成功
fs.mkdir("./testDir/aa/bb",function (err) {
    if (err) {
        throw err;
    }
    console.log("目录创建成功");
});


//只能删除空目录,如果目录非空(含子目录或子文件) 则不能成功删除。
fs.rmdir("./testDir",function (err) {
    if (err) {
        throw err;
    }
    console.log("目录删除成功");
});


//递归创建多层目录
 function mkDirRecursive(dir, callback) {

    fs.exists(dir, function(exists) {

        if(exists) {
            callback();
        } else {
            //递归调用函数
            mkDirRecursive(path.dirname(dir), function(){
                fs.mkdir(dir, callback);
                console.log("在"+path.dirname(dir) + '目录中创建: ' + dir  +'目录');
            });
        }
    });
};

 //ok
 mkDirRecursive("./testDir/aa/bb",function () {
     console.log('ok');
});

 //递归删除目录
function rmDirRecursive(dir) {
    if( fs.existsSync(dir) ) {
        fs.readdirSync(dir).forEach(function(file) {
            var curPath = dir + "/" + file;
            if(fs.statSync(curPath).isDirectory()) { // recurse
                rmDirRecursive(curPath);
            } else { // delete file
                fs.unlinkSync(curPath);
            }
        });
        fs.rmdirSync(dir);

    }
};

//ok
rmDirRecursive("./testDir/aa");




//判定文件(目录)是否存在
fs.exists("./testDir/cc",function (exists) {
   // util.debug(exists ? "存在" : "不存在!");
    if (exists) {
        console.log("文件存在");
    }else{
        console.log("文件不存在");
    }
});


//文件写入
 fs.writeFile("./testDir/a.txt","hello 你好",function (err) {
     if (err) {
         console.log("写入失败");
         throw err;
     }
     console.log("写入成功");

 });

//文件追加写入
 fs.appendFile("./testDir/a.txt","hello 你好1111\n",function (err) {
     if (err) {
         console.log("追加写入失败");
         throw err;
     }
     console.log("追加写入成功");
// });

//删除文件
 fs.unlink("./testDir/a.txt",function (err) {
     if (err) {
         console.log("文件删除失败");
         throw err;
     }
     console.log("文件删除成功");
 });


//检测文件  是文件还是目录
 fs.stat("./testDir/aa/11.txt",function (err,stats) {
     if (stats.isDirectory() {
         console.log('是目录');
     }else if(stats.isFile()){
         console.log('是文件');
     }else{
         console.log('是其他文件');
     }
 });

//读取目录 (列出目录中所有文件(夹))
 fs.readdir('./testDir/aa',function (err,files) {
     console.log(files);
 });




//读取目录中的文件,过滤掉子目录
function readDirFiles(dir,callback) {

    fs.readdir(dir,function (err,files) {
         var dirFiles=[];
         //立即执行的函数
        (function iterator(i) {

            if(i==files.length){
             //   console.log(dirFiles);
                callback(dirFiles);//使用回调函数向外返回
                return ;//结束
            }
            fs.stat(dir+"/"+files[i],function (err,stat) {
                if (stat.isFile()) {
                    dirFiles.push(files[i]);
                }
                iterator(i+1);
            });

        })(0);
    });
}
//调用  
 readDirFiles('./testDir/aa',function (dirFiles) {
     //console.log("ok");
     console.log(dirFiles);
 });

关键字:  nodejs
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号