• nodejs——文件系统


    文件系统里方法有很多但是主要常用的无外乎 创建,打开,读取,添加,删除等方法。

    1.引入fs模块。

    var fs = require('fs');

    2.打开。

    fs.open(path, flags, [mode], callback)

    path:要打开的文件路径。

    flags:打开文件的方式,读/写。

    mode:可选项。 设置文件的模式  读/写/执行  4/2/1

    callback: 回调

      回调接受两个参数:1. err:文件打开失败的错误保存在err里面,如果成功err为null。2. fd:被打开文件的标识。

    fs.open('1.txt', 'r', function(err, fd){
       console.log(err);
       console.log(fd);
       
       if(err){
          console.log("文件打开失败");    
        } else{
          console.log("文件打开成功"); 
        }
       
    })

    当你第一次打开文件成功时,fd实例中返回数字3,就像你平时使用定时器时最后都会返回一个标识符给我们,然后我们根据标识符来操作具体哪一个定时器。当你在下面再打开一次同一个文件,标识符就变成4,累加的状态。

    nodejs问我们提供文件系统模块的方法时,有很多都是有不同版本的,即同步异步。

    异步操作:

    fs.open('1.txt', 'r', function(err, fd){
       console.log(err);
       console.log(fd);
       
       if(err){
          console.log("文件打开失败");    
        } else{
          console.log("文件打开成功"); 
        }
       
    })
    
    console.log("OK");

    此时先输出的是OK。

    同步操作:

    var fd = fs.openSync(path, flags, [mode]);
    
    console.log(fd);

    fd是它的返回值,如果我们想后续操作的话直接在后面写就好了,同步会阻塞后续代码的执行。

    3.读取。

    fs.open('1.txt', 'r', function(err, fd){
       console.log(err);
       console.log(fd);
       
       if(err){
          console.log("文件打开失败");    
        } else{
    
          fs.read(fd, buffer, offset, length, position, callback)
         
        }
       
    })

    fd: 通过open方法成功打开一个文件返回的编号。

    buffer:buffer对象

    offset:新的内容添加到buffer中的起始位置

    length:添加到buffer中内容的长度

    position:读取文件中的起始位置

    callback:回调

      err:

      len:buffer的长度

      newBf:新的buffer对象

    假如1.txt文件的内容是  abcd

    var bf1 = new Buffer('123456789');

    console.log(bf1); // <Buffer 31 32 33 34 35 36 37 38 39>

    fs.read(fd, bf1, 0, 4, null, function(err, len, newBf){

      console.log(bf1) // <Buffer 61 62 63 64 35 36 37 38 39>

      console.log(len) // 4

      console.log(newBf) //<Buffer 61 62 63 64 35 36 37 38 39>

    })

  • 相关阅读:
    设计模式之工厂模式 练习
    c++智能指针(1)
    记录下 UTF6 GBK 转换函数
    ip白名单 通过* ? 检测IP匹配 轻量级
    stl学习记录(2)
    boost 学习(1)
    stl string 小练习
    stl string 使用指定的分隔符分割成数个子字符串
    [open source] skinbuilder发布
    Builder模式实例分析(C语言版)
  • 原文地址:https://www.cnblogs.com/wusheng2016/p/6803692.html
Copyright © 2020-2023  润新知