美文网首页
NodeJS File System-文件系统模块

NodeJS File System-文件系统模块

作者: 走停2015_iOS开发 | 来源:发表于2018-06-30 11:52 被阅读3次

    该模块是核心模块,需要使用require导入后使用

    • 异步打开一个文件
     fs模块
     fs.open(path,flag,[mode],callback) 异步打开一个文件
     path:要打开文件的路径
     flags:打开文件的方式 读/写
     mode:设置文件的模式 读/写/执行 4/2/1
     callback:回调
     err:文件打开失败的错误保存在err里面,如果失败err为null
     fd:被打开文件的标识,和定时器
    
    var fs = require('fs');
    fs.open('1.js','r',function(err,fd)
        console.log(err);
        console.log(fd);
    });
    -------------打印---------------------------------------------------
    { Error: ENOENT: no such file or directory,
        // open '2.js' errno: -2, code: 'ENOENT', syscall: 'open', path: '2.js' }
    
    fs.open('1.js','r',function(err,fd){
        console.log(err);
        console.log(fd);
    });
    console.log('ok');
    -------------打印---------------------------------------------------
    11
    ok
    
    • 同步打开一个文件
     fs.openSync(path,flag,[mode]) 同步打开一个文件
    var fs = require('fs');
    var fd = fs.openSync('1.js','r');
    console.log(fd);
    console.log('ok');
    -------------打印---------------------------------------------------
    11
    ok
    
    • fs模块读取文件内容
    var fs = require('fs');
    fs.open('1.js','r',function(err,fd){
    
        if(!err)
        {
            //读取文件
            //fs.read(fd,buffer,offset,length,position,callback)
            //fs:通过open打开文件返回的编号
            //buffer:打开文件的数据存放在这里
            //offset:新的内容添加到buffer中的起始位置
            //length:添加到buffer的内容的长度
            //position:读取文件中的起始位置
            //callback:回调
            //      err:
            //      len:
            //      newbf:
            var bf1 = new Buffer('123456789');
            console.log(bf1);
            fs.read(fd,bf1,0,4,null,function(err,len,newbf){
                console.log(bf1);
                console.log(newbf);
                console.log(len);
            });
        }
    });
    -------------打印---------------------------------------------------
    //<Buffer 31 32 33 34 35 36 37 38 39>
    //<Buffer 2f 2a 2a 0a 35 36 37 38 39>
    //<Buffer 2f 2a 2a 0a 35 36 37 38 39>
    //4
    
    • fs模块写入文件内容
    var fs = require('fs');
    fs.open('2.js','r+',function(err,fd){
    
        // fs.write(fd,buffer,offset,length,position,callback)
        //fs.writeSync(fd,buffer,offset,length,position,callback)
        //fs:通过open打开文件返回的编号
        //buffer:要写入的数据
        //offset:buffer中的写入的数据的起始位置
        //length:要写入的buffer的内容的长度
        //position:读取文件中的起始位置
        //callback:回调
        //      err:
        //      len:
        //      newbf:
        if(!err) {
            var bf = new Buffer('1234');
    
            fs.write(fd, bf, 0, 4, 0, function () {
    
                console.log(arguments);
                //{ '0': null, '1': 4, '2': <Buffer 31 32 33 34> }
            });
        }
    })
    
    var fs = require('fs');
    fs.open('2.js','r+',function(err,fd){
    
        // fs.write(fd,position,[encoding])
        //fs:通过open打开文件返回的编号
       // encoding:编码
        //position:读取文件中的起始位置
    
        if(!err) {     
            fs.write(fd,'1234', 0,'utf-8',function(){
    
            } );
    }
    }
    
    F41E8173-66A8-4755-B39D-384A676CF3C5.png A40F4A4D-AE26-4F67-B48C-9DD8C67BA0AC.png
    • 关闭文件
    fs.close(fd,function(){
                   
       });
    
    • 写文件
    1. writeFile
    2. writeFileSync
    var fs = require('fs');
    var fileName = "3.js";
    //向一个文件中写入数据,如果该文件不存在就创建,如果存在,新的内容会覆盖原有的内容
    fs.writeFile(fileName,'miaov',function()
    {
        console.log(arguments);
    });
    //appendFile:如果该文件不存在就创建
    fs.appendFile(fileName,'leo',function(){
        console.log(arguments);
    });
    

    例子如下

    var fs = require('fs');
    var fileName = "3.js";
    fs.exists(fileName,function(isExists){
        if(!isExists){
            fs.writeFile(fileName,'miaov',function(err){
                if(err){
                    console.log('出错了');
                }else
                {
                    console.log('创建新文件成功,并且写入了内容');
                }
            });
    
        }else
        {
            fs.appendFile(fileName,'-cheshi-',function(err){
                if(err)
                {
                    console.log('新的内容追加失败');
                }else
                {
                    console.log('新的内容追加成功');
                }
    
            });
        }
    });
    
    • 文件读取
    var fs = require('fs');
    fs.readFile('2.js',function(err,data){
       console.log(arguments);
        console.log(data.toString());
    });
    
    • 文件删除
    var fs = require('fs');
    fs.unlink('2.js',function(err){
    
    });
    
    • 文件重命名
    var fs = require('fs');
    fs.rename('3.js','2.new.js',function()
    {
        console.log(arguments);
    });
    
    • 返回文件信息
    
    var fs = require('fs');
    fs.stat('2.new.js',function()
    {
        console.log(arguments);
    });
    -------------打印---------------------------------------------------
    { '0': null,
        '1':
        Stats {
        dev: 16777221,
            mode: 33188,
            nlink: 1,
            uid: 501,
            gid: 20,
            rdev: 0,
            blksize: 4096,
            ino: 49454047,
            size: 27,
            blocks: 8,
            atimeMs: 1530340151000,
            mtimeMs: 1530333980000,
            ctimeMs: 1530333980000,
            birthtimeMs: 1530333921000,
            atime: 2018-06-30T06:29:11.000Z,
            mtime: 2018-06-30T04:46:20.000Z,
            ctime: 2018-06-30T04:46:20.000Z,
            birthtime: 2018-06-30T04:45:21.000Z } }
    
    • 创建和删除文件夹
    //fs.mkdir(path,[mode],callback)
    var fs = require('fs');
    fs.mkdir('./1',function(err){
        console.log(arguments);
    });
    fs.rmdir('./1',function(err){
    });
    
    • 读取文件夹信息
    fs.readdir('../Lib',function(err,filelist){
        console.log(err);
        //console.log(filelist);
        filelist.forEach(function(f){
           fs.stat(f,function(err,info){
               console.log(arguments);
               if(info.mode == 16822)
               {
                   console.log('文件夹');
               }else if(info.model =33206)
               {
                   console.log('文件');
               }
            });
        });
    });
    

    相关文章

      网友评论

          本文标题:NodeJS File System-文件系统模块

          本文链接:https://www.haomeiwen.com/subject/ntjtuftx.html