NodeJs基础之字节操作路径操作和文本操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJs基础之字节操作路径操作和文本操作相关的知识,希望对你有一定的参考价值。

 

字节操作 buffer对象

  • 构造函数
    • new Buffer(size) 参数为数值,表示分配空间的长度
    • new Buffer(string,[encoding]) 参数为字符串,表示存入Buffer的数据,编码可选
    • new Buffer(array) 参数为数组,表示存入Buffer的数据
  • 静态方法
    • Buffer.isBuffer(obj) 判断是否为Buffer(静态方法直接通过类名调用)
  • 实例方法
    • buf.write(content,offset,length,encoding);
      • content 表示写入Buffer的内容
      • offset 表示写入Buffer的起始位置
      • length 表示写入Buffer的字节数量
      • encoding 表示写入Buffer的编码设置(ascii/utf8/utf16le/ucs2/base64/binary/hex)

 

路径操作 path对象

引入模块 var path = require("path");

  1. path.normalize(path) 规范化路径
  2. path.basename(path[, ext]) 获取文件名称,包括扩展名
  3. path.dirname(path) 获取文件全路径,不包括扩展名
  4. path.extname(path) 只获取文件扩展名
  5. path.parse(path) 把字符串形式的文件路径转化为对象形式
  6. path.format(pathObject) 把对象形式的文件路径转化为字符串形式
  7. path.relative(from, to) 找到两个路径的相对路径
  8. path.resolve([from ...], to) 把多个路径解析完成后形成最终路径
  9. path.join([path1][, path2][, ...]) 连接路径
  10. path.sep 路径分隔符 Window"\" 或 Linix"/"
        ‘foo\\bar\\baz‘.split(path.sep)
        // returns [‘foo‘, ‘bar‘, ‘baz‘]
    
  11. path.delimiter 环境变量分隔符,window中是“;” , Linix 系统中是“:”符号

 

文件操作 File System 对象

引入File System模块 var fs = require(‘fs‘)

1.判断文件是否存在

  • fs.exists(path, callback);
    • callback(exists); exists==true 存在 , exists==false 不存在 ,

2.查看文件的基本信息

  • fs.stat(path, callback);
    • callback(err, stats);
    • stats是信息对象,有isFile(),isDirectory()方法,和size属性

3.打开文件

  • fs.open(path, flags[, mode], callback); callback(err , fd);
    • path:路径
    • flags:读写标志位 只读"r"、读写"r+"
    • mode:读/写/可执行 4/2/1 通常只在Linix中使用
    • callback:回调函数(第二个参数是一个数字,表示文件的句柄);

4.读取文件

  • 异步操作
  • fs.read(fd, buffer, offset, length, position, callback);
    • fd 文件句柄
    • buffer 文件内容读取到什么地方
    • offset 从Buffer的什么位置开始读取
    • length 向Buffer中读取几个字节
    • position 表示从文件中的什么位置开始读取
    • callback 表示回调函数 callback(err, bytesRead, buffer)
      • bytesRead 读入的字节长度,相当于length
      • buffer 读入的内容
  • 同步操作,返回值为字节长度
  • var ret = fs.readSync(fd,bf,0,bf.length,0);

5.写入文件

  • 异步操作
  • fs.write(fd, buffer, offset, length[, position], callback)
    • fd 文件句柄,操作哪个文件
    • buffer //String> | //Buffer> 要写入的内容
    • offset 从Buffer的什么位置开始写入
    • length 写几个字节的内容
    • position 表示从文件中的什么位置开始写入
    • callback 表示回调函数(err, written, buffer)
      • err表示错误信息
      • written 即写入的内容的字节长度
      • buffer 写入的内容
  • 同步操作
  • fs.writeSync(fd, buffer, offset, length[, position]); 返回值为写入的字节长度length

6.关闭文件

  • 异步操作 fs.close(fd, callback); callback(err);
  • 同步操作 fs.closeSync(fd); 没有返回值

7.读写文件的快捷操作

  • 读取文件 fs.readFile(file[, options], callback); callback(err , data);
    • 第一个参数要读的那个文件
    • 如果第二个参数传递编码,那么读取到的数据就是文本;
    • 如果不传递编码,那么读取到的数据是Buffer
  • 读取的同步操作,返回值为读取到的内容
    • fs.readFileSync(file[, options]);
  • 写入文件 fs.writeFile(file, data[, options], callback); callback(err);
  • 写入文件的同步操作,没有返回值
    • fs.writeFileSync(file, data[, options])

8.文件夹操作

  • 创建文件夹
    • fs.mkdir(path[, mode], callback); callback(err);
    • 参数path 要创建的文件夹,及其路径
  • 创建文件夹的同步操作,没有返回值
    • fs.mkdirSync(path[, mode])
  • 读取文件夹
    • fs.readdir(path[, options], callback);
    • 参数path是文件夹路径
    • options 编码 //String> 默认 ‘utf8‘
    • callback(err , files); 第二个参数是文件的集合,数组类型,包含文件和文件夹
  • 读取文件夹的同步操作,返回值是所含文件的集合,数组类型,包含文件和文件夹
    • fs.readdirSync(path[, options]);
  • 移除文件夹,只能移除空文件夹 fs.rmdir(path, callback); callback(err);
  • 移除文件夹的同步操作,没有返回值 fs.rmdirSync(path)

9.监听文件与取消监听操作

  • 监听文件的变化
    • fs.watch(filename[, options][, listener]);
      • filename是要监听的文件名
      • listener //Function> 监听处理函数。参数(event,filename);
      • event是文件发生变化的事件,一般为rename和change
      • filename就是被监听的文件
    • fs.watchFile(filename[, options], listener);
      • options有两个属性
        • persistent //Boolean> 是否被监听
        • interval //Integer> 被监听的时间间隔,默认是5007毫秒
      • listener //Function>,参数(curr,prev);
        • curr表示文件变化之前的状态信息,prev表示文件变化之后的状态信息
  • 取消监听
    • fs.unwatchFile(filename[, listener]);
      • listener //Function>,这表示具体的函数名,可以没有,而不可以是匿名函数

10.文件流的读写操作

readStream.pipe(writeStream); 管道思想,简易写法

* 流文件的读取 fs.createReadStream(path[, options])
    * path 读取的文件路径
    * options <String> | <Object> 如果是字符串,是设置文件的编码格式
    * 返回值 :返回的是读取的文件对象
* 流文件的写入 fs.createWriteStream(path[, options])
    * path 要写入的文件路径
    * options参数含义与读取的一致
    * 返回值是写入的文件对象
注意:所有的文件写入操作,如果没有相应路径的文件,相当于创建新的文件

以上是关于NodeJs基础之字节操作路径操作和文本操作的主要内容,如果未能解决你的问题,请参考以下文章

python基础之文件操作

python基础之文件读写

node.js 基础操作

Python学习之路:基础知识之文件操作

nodejs为啥可以操作文件原理

乐字节Java之fileIO流基础知识和操作步骤