zoukankan      html  css  js  c++  java
  • Node.js 文件系统

    Node.js 文件系统

    参考https://www.runoob.com/nodejs/nodejs-fs.html
    Node.js提供一组类似UNIX(POSIX)标准的文件操作API。

      var fs = require('fs');
    

    异步和同步

    • fs模块中的方法均有异步同步两个版本,例如读取文件有fs.readFile()和fs.readFileSync();
    • 异步方法的最后一个参数为回调函数,回调函数的第一个参数为错误信息err;
    • 推荐使用异步方法,性能更高,速度更快,且无阻塞。
    var fs = require('fs');
    
    // 异步读取
    fs.readFile('input.txt', (err, data)=>{
    	if(err){
    		console.error(err);
    		return;
    	}
    	console.log('异步读取:'+data.toString());
    });
    
    // 同步读取
    var data = fs.readFileSync('input.txt');
    console.log('同步读取:'+data.toString());
    
    console.log('程序执行结束');
    

    结果:

      同步读取:菜鸟教程官网地址:www.runoob.com
      文件读取实例
      程序执行结束
      异步读取:菜鸟教程官网地址:www.runoob.com
      文件读取实例
    

    打开文件

      fs.open(path, flags[, mode], callback)
    
    • path:文件路径
    • flags:文件打开方式,和python类似
    • mode:设置文件权限,默认为0666(可读可写)
    • callback:回调函数,带两个参数(err, fd)

    flags参数

    • r:只读,不存在则抛异常
    • r+:读写,不存在则抛异常
    • rs:同步读
    • rs+:同步读写
    • w:写,不存在则创建
    • wx:创建并写,如果已存在则写失败
    • w+:读写,不存在则创建
    • wx+:读写,如果已存在则读写失败
    • a:追加模式打开,不存在则创建
    • ax:追加模式打开,如果已存在则追加失败
    • a+:读取追加模式打开,不存在则创建
    • ax+:读取追加模式打开,如果已存在则读取追加失败

    r写,w读,+赋予额外的读或写权限,a追加,x已存在则失败,不带x读不存在则抛异常,不带x写不存在则抛异常

    获取文件信息

      fs.stat(path, callback)
    
    • path:文件路径
    • callback:回调函数,带两个参数(err, stats),stats是fs.Stats对象
      fs.stats(path)执行后,会返回fs.Stats对象,通过该对象的方法判断文件的相关属性,例如判断是否为文件:
    var fs = require('fs');
    
    
    fs.stat('./input.txt',(err, stats)=>{
    	console.log(stats.isFile());
    });
    
    
    console.log('程序执行结束');
    

    结果:

      程序执行结束
      true
    

    第一次执行的时候提示说:

      console.log(stat.isFile());
                    ^
      ReferenceError: stat is not defined
    

    后来还去查了下文档,发现没写错,后来莫名其妙就可以了……而且我的是v14.15.2。

    stats类中的方法

    var fs = require('fs');
    
    
    console.log('准备打开文件!');
    fs.stat('input.txt', (err, stats)=>{
    	if(err){
    		return console.log(err);
    	}
    	console.log(stats);
    	console.log('读取文件信息成功!');
    });
    
    console.log('程序执行结束');
    

    结果:

      准备打开文件!
      程序执行结束
      Stats {
        dev: 3127162932,
        mode: 33206,
        nlink: 1,
        uid: 0,
        gid: 0,
        rdev: 0,
        blksize: 4096,
        ino: 2533274790624099,
        size: 60,
        blocks: 0,
        atimeMs: 1609120186409.6863,
        mtimeMs: 1609120186409.6863,
        ctimeMs: 1609120186409.6863,
        birthtimeMs: 1609120178188.6562,
        atime: 2020-12-28T01:49:46.410Z,
        mtime: 2020-12-28T01:49:46.410Z,
        ctime: 2020-12-28T01:49:46.410Z,
        birthtime: 2020-12-28T01:49:38.189Z
      }
      读取文件信息成功!
    

    写入文件

    异步写入文件

      fs.writeFile(file, data[, options], callback)
    
    • file:文件或文件描述符
    • data:待写入数据,String或Buffer对象
    • options:{encoding, mode, flag},默认为{'utf8', 0666, 'w'}
    • callback:回调函数,带有参数err,写入失败时返回

    读取文件

    异步读取

      fs.read(fd, buffer, offset, length, position, callback)
    

    使用文件描述符fd来读取文件。

    • fd:通过fs.open()返回的文件描述符
    • buffer:数据写入的缓冲区
    • offset:数据缓冲区写入的写入偏移量
    • length:要从文件中读取的字节数
    • position:读取的起始位置,如果为null则从当前文件指针处
    • callback:回调函数,带三个参数(err, bytesRead, buffer)

    关闭文件

      fs.close(fd, callback)
    

    使用文件描述符关闭文件

    • fd:通过fs.open()返回的文件描述符
    • callback:回调函数,没有参数

    截取文件

    异步截取文件

      fs.ftruncate(fd, len, callback)
    

    使用文件描述符来截取文件

    • fd:通过fs.open()返回的文件描述符
    • len:文件内容的长度
    • callback:回调函数,没有参数
      在callback中对截取后的文件进行fs.read()、fs.write()、fs.close()等操作

    删除文件

      fs.unlink(path, callback)
    
    • path:文件路径
    • callback:回调函数,没有参数

    创建目录

      fs.mkdir(path, [, options], callback)
    
    • path:目录路径
    • options:{recursive, mode},recursive,递归创建(父级目录不存在则创建),默认为false;mode,设置目录权限,默认为0777
    • callback:回调函数,没有参数

    读取目录

      fs.readdir(path, callback)
    
    • path:目录路径
    • callback:回调函数,带两个参数(err, files),files为文件数组列表

    删除目录

    异步删除目录

      fs.rmdir(path, callback)
    
    • path:目录路径
    • callback:回调函数,没有参数

    总结

    fs中的方法一般都有同步和异步两种,异步的最后一个参数通常是一个回调函数,该回调函数的参数可能有若干个或没有;
    fs.read()和fs.write()功能类似fs.readFile()和fs.writeFile(),不过提供了更底层的操作,而且是对通过fs.open()得到的文件描述符进行操作。

  • 相关阅读:
    形象理解ERP(转)
    禁用windows server 2008 域密码复杂性要求策略
    How to adding find,filter,remove filter on display method Form
    Windows Server 2008 R2激活工具
    How to using bat command running VS development SSRS report
    Creating Your First Mac AppGetting Started
    Creating Your First Mac AppAdding a Track Object 添加一个 Track 对象
    Creating Your First Mac AppImplementing Action Methods 实现动作方法
    Creating Your First Mac AppReviewing the Code 审查代码
    Creating Your First Mac AppConfiguring the window 设置窗口
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14200653.html
Copyright © 2011-2022 走看看