Node.js之文件模块

在前端JavaScript时代,关于文件I/O这一块是没有的。但是,从前端到后端,这种文件I/O的需求自然而然成为必须,所以Node.js也增加了文件模块。

Buffer

在正式介绍Node.js文件模块之前,我想先聊一聊Node.js中的Buffer。

为什么需要Buffer

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

Buffer是什么

Buffer是一个由JavaScript和C++结合的模块,性能相关部分由C++实现,非性能相关部分由JavaScript实现。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。Buffer的元素为16进制,即0-255的数值。

如何使用Buffer

创建 Buffer 类
  • 创建长度为 10 字节的 Buffer 实例:
    var buf = new Buffer(10);
  • 通过给定的数组创建 Buffer 实例:
    var buf = new Buffer([10, 20, 30, 40, 50]);
  • 通过一个字符串来创建 Buffer 实例:
    var buf = new Buffer("Hello world", "utf-8");
    utf-8 是默认的编码方式,此外它同样支持以下编码:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"。
写入缓冲区

语法
buf.write(string[, offset[, length]][, encoding])

实例:

buf = new Buffer(1 * 1024);               // 创建1KB大小的Buffer对象
len = buf.write("Hello world");  // 写入内容到Buffer对象中
console.log("写入字节数 : "+  len);
Buffer转字符串

buf.toString([encoding[, start[, end]]])

Node.js 文件系统

说完Buffer,我开始了解Node.js 文件系统。

简介

文件 I/O 是由简单封装的标准 POSIX 函数提供。 通过 require('fs') 使用该模块。 所有的方法都有异步和同步的形式。

异步方法的最后一个参数都是一个回调函数。 传给回调函数的参数取决于具体方法,但回调函数的第一个参数都会保留给异常。 如果操作成功完成,则第一个参数会是 null 或 undefined。

当使用同步方法时,任何异常都会被立即抛出。 可以使用 try/catch 来处理异常,或让异常向上冒泡。

如何使用

  • 打开文件
    open(path, flags[,mode] callback)
    fs.open('input.txt', 'r+', function(err, fd) {
    if (err) {
    return console.error(err);
    }
    console.log("文件打开成功!");
    });

  • 获取文件信息
    stat(path, callback)
    fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
    console.log(stats.isFile());
    })

  • 写入文件
    write(fd, buffer, offset, length[, position], callback)
    writeFile(path, data[, options], callback)

  • 读取文件
    read(fd, buffer, offset, length, position, callback)
    readFile(path[, options], callback)

  • 关闭文件
    close(fd, callback)

  • 截取文件
    ftruncate(fd, len, callback)

  • 删除文件
    unlink(path, callback)

  • 创建目录
    mkdir(path[, mode], callback)

  • 读取目录
    readdir(path, callback)

  • 删除目录
    rmdir(path, callback)

  • 删除文件
    unlink(path, callback)

  • 创建目录
    mkdir(path[, mode], callback)

转载于:https://www.cnblogs.com/zhouleiwit/p/7468000.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值