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参数含义与读取的一致
    * 返回值是写入的文件对象
注意:所有的文件写入操作,如果没有相应路径的文件,相当于创建新的文件
时间: 2024-10-19 09:50:33

NodeJs基础之字节操作、路径操作和文本操作的相关文章

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11

java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调

python基础(文件输入/输出 内建类型 字典操作使用方法)

本文主要介绍了python基础入门,包括文件输入/输出.内建类型.字典操作等使用方法 一.变量和表达式 代码如下: >>> 1 + 1 2>>> print 'hello world' hello world>>> x = 1               >>> y = 2>>> x + y3 Python是强类型语言,无法根据上下文自动解析转换成合适的类型. Python是一种动态语言,在程序运行过程中,同一个变量

(转) unity 在移动平台中,文件操作路径详解

http://www.unitymanual.com/thread-23491-1-1.html 今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够更好.更快的掌握,当然,如有不足的地方 欢迎指正!!! 相信大家在开发过程中,难免会保存一些文件在客户端进行本地化操作.如:配置文件,状态文件,Assetbundle文件等等... 最近总有人问我:1.保存了一个xml在客户端,能读取里面的数据,可是不能修改,甚至一修改就报错...2.我在电脑上操作

TI CC2530基础实验(GPIO通用I/O中断操作——一个中断处理程序处理一个端口的多个中断)

有关CC2530的GPIO基本知识.普通GPIO操作有关寄存器的介绍.IAR Embedded Workbench IDE软件使用:TI CC2530基础实验(普通GPIO操作--点亮led灯) 有关CC2530通用I/O中断操作的基础知识.相关寄存器介绍:TI CC2530基础实验(GPIO通用I/O中断操作--按键控制灯的亮灭) 电路原理图: 程序: /************************************** * 基础实验只需要添加以下这个头文件即可 **********

Path 类。这个类是专门用来操作路径的。

<1> using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Path路径 { /// <summary> /// Path 这个类是专门用来操作路径的. /// </summary> class Program { static void Main(string[] args) { string s

HTML&amp;CSS基础学习笔记1.6-html的文本操作标签

文本也许是HTML里最常见的元素了,所以我们有必要对HTML的文本操作标签做下认识. 1. <em>,<i>内的文字呈现为倾斜效果: 2. <strong>,<b>内的文字呈现为加粗效果: 3. <b>,<i>只是单纯的为了让文本具有某种特殊样式,而<strong>,<em>不仅带有特殊样式,而且也表达了某种语义: 4. 在单纯的为了达到某种样式的情况下,建议使用不带有语义的标签. 体验如下:http://ww

nodejs基础要点总结

这是一个md文件 大家觉得需要可以直接复制粘贴到md文件下用html打开看,这样效果会好点 ### 客户端的JavaScript是怎样的 - 什么是 JavaScript? +是一个脚本语言 +运行在浏览器(浏览器的js解析内核 v8) +实现用户的交互 (interactive) + 变量 赋值 循环 逻辑 判断 分支 对象 函数.... + dom 操作 + bom 操作 + ajax - JavaScript 的运行环境? +浏览器内核解析内核 es6 - 浏览器中的 JavaScript

C#文本操作

1.使用FileStream读写文件 文件头: 复制代码代码如下: using System;using System.Collections.Generic;using System.Text;using System.IO; 读文件核心代码: 复制代码代码如下: byte[] byData = new byte[100];char[] charData = new char[1000];try{FileStream sFile = new FileStream("文件路径",Fil