iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node文件操作汇总实例详解
  • 754
分享到

Node文件操作汇总实例详解

Node文件操作汇总Node文件操作 2022-11-13 18:11:20 754人浏览 八月长安
摘要

目录前言文件系统目录处理读写文件文件描述监控文件异步文件删除文件总结前言 前两天我们介绍了 nodejs 中 I/O 的重要组成部分:Buffer对象 和 Stream流,今天我们介

前言

前两天我们介绍了 nodejs 中 I/O 的重要组成部分:Buffer对象Stream流,今天我们介绍 nodejs 的文件系统,包括文件和目录的读写、删除,以及监听文件和目录的修改。

文件系统

Nodejs 内置的 fs模块 可与文件系统进行交互,封装了常规的 POSIX函数。POSIX(Portable Operating System Interface,可移植操作系统接口)是UNIX系统的一个设计标准。fs模块提供了多个操作目录和文件的方法,大多会有同步和异步两种版本。同步的方法名称会以Sync为后缀。

目录处理

fs模块的 readdir() 方法可异步的读取目录内容。回调函数包含两个参数,第一个是错误对象,第二个是一个包含文件名称的数组,对应的同步方法是 readdirSync() 。在下面的示例中,当前目录包含两个文件,上一级目录包含一个目录名称。

const fs = require('fs');
fs.readdir('./', (err, files) => {
  console.log(files);        //[ 'demo.txt', 'index.js' ]
});
fs.readdir('../', (err, files) => {
  console.log(files);        //[ '1' ]
});

其它处理目录的方法还有 opendir()mkdir() 等。

读写文件

在fs模块中,可使用批量方法 readFile() 将文件内容一次性的加载到内存中,如下所示。

const fs = require('fs');
fs.readFile('./origin.txt', (err, buf) => {
  console.log(buf.toString());        //"hello node.js"
});

对应的写入方法是 writeFile() ,如下所示。

fs.writeFile('./target.txt', 'hello Node.js', (err) => {
  if (err) throw err;
  console.log('文件已被保存');
});

? 文件路径、写入内容和回调函数是必传的参数。如果文件不存在,那么会自动创建。

当文件很大时,该方法会因V8内存不足而出现问题。此时可以改用之前提到的流式方法 createReadStream(),分批次的读取文件。

如下所示,每次只读7个字节的内容。

const readable = fs.createReadStream('./origin.txt', {highWaterMark: 7});
readable.on("data", (chunk) => {
  
  
  console.log(chunk.toString());
});

通过管道方法 pipe()origin.txt 中的内容写入到 target.txt 中,如下所示,对于不存在的文件,也会自动创建。

const writable = fs.createWriteStream('./target.txt');
readable.pipe(writable);

文件描述

fs模块的 stat() 方法可读取文件的描述信息,如下所示。

fs.stat('./demo.txt', (err, stats) => {
  console.log(stats);
});

回调函数中的stats参数是一个 fs.Stats对象 ,其属性如下所示。它还包含一些判断方法,例如isDirectory()、isFile()等。

Stats {
  dev: 195650,
  mode: 33206,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: undefined,
  ino: 36873221949682120,
  size: 13,
  blocks: undefined,
  atimeMs: 1586227933993.0217,
  mtimeMs: 1585882949091.0166,
  ctimeMs: 1586227933995.0222,
  birthtimeMs: 1586227933993.0217,
  atime: 2020-04-07T02:52:13.993Z,
  mtime: 2020-04-03T03:02:29.091Z,
  ctime: 2020-04-07T02:52:13.995Z,
  birthtime: 2020-04-07T02:52:13.993Z
}

fs模块还提供了 fstat() 方法,在功能上与 stat() 等价,只是 fstat() 方法的第一个参数是文件描述符。在POSIX系统中,文件描述符是一个正整数,它实际上是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当打开或创建一个文件时,就会被分配一个文件描述符。

在下面的示例中,open() 方法的回调函数中包含一个 fd参数(即文件描述符),搭配 fstat() 方法就能读取文件信息:

fs.open('./demo.txt', 'r', (err, fd) => {
  fs.fstat(fd, (err, stats) => {
    console.log(stats);
  });
});

监控文件

fs模块提供了两种方法来监控文件:watch()watchFile() ,前者能监控文件或目录的更改,后者只能监控文件的更改。

watch() 方法的监听器回调包含两个参数,第一个是事件类型(包括rename和change),第二个是触发事件的文件名称,如下所示:

fs.watch('./demo.txt', (eventType, filename) => {
  console.log(eventType, filename);
});

执行node命令后,每次更改demo.txt文件,就会在控制台打印出下面这条语句。

$ node index.js
change demo.txt

虽然 watch() 方法的性能优于 watchFile() 方法,但是 watch() 不是一个跨平台的方法,其表现在各个平台中并非百分百一致(例如filename参数不能保证提供),而 watchFile() 是跨平台的。

异步文件

fs.promises 是 Nodejs 提供的一组备用的异步文件系统方法,它们会返回Promise对象而不是通过回调来处理结果。例如以Promise的方式使用 stat() 方法,如下所示。

const fsPromises = require('fs').promises;
fsPromises.stat('./demo.txt').then(stats => {
  console.log(stats);
});

删除文件

Nodejs 中 fs模块 提供了 unlink()rm() 两个方法来删除文件。下面的代码实现了删除当前文件夹下的 toBeDel.txt 文件:

const fs = require('fs');
fs.unlink('./toBeDel.txt', (err) => {
    if (!err) {
        console.log(err);
    }
});
// or
fs.rm('./toBeDel.txt', (err) => {
    if (!err) {
        console.log(err);
    }
})

如果要删除文件夹,可以使用 rmdir() 方法,用法同 rm() 方法一样。

? rm() 同时支持删除目录和文件,而 unlink() 只能用于删除文件。

总结

fs模块 提供了大量对文件的操作的api,你无需去全部记住他们,只需像在学习 linux 时简单记住那些基础的命令即可:

  • fs.stat 读取文件的描述信息
  • fs.mkdir 创建目录 (创建之前先判断是否存在)
  • fs.writeFile 写入文件(文件不存在就创建,但不能创建目录)
  • fs.appendFile 写入追加文件
  • fs.readFile 读取文件
  • fs.readdir 读取目录
  • fs.rename 重命名
  • fs.rmdir 删除目录
  • fs.unlinkfs.rm 删除文件

以上就是Node文件操作汇总实例详解的详细内容,更多关于Node文件操作汇总的资料请关注编程网其它相关文章!

--结束END--

本文标题: Node文件操作汇总实例详解

本文链接: https://www.lsjlt.com/news/169619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node文件操作汇总实例详解
    目录前言文件系统目录处理读写文件文件描述监控文件异步文件删除文件总结前言 前两天我们介绍了 Nodejs 中 I/O 的重要组成部分:Buffer对象 和 Stream流,今天我们介...
    99+
    2022-11-13
    Node文件操作汇总 Node 文件操作
  • Oracle RMAN操作汇总详解
    RMAN(Recovery Manager):恢复管理器 RMAN概念: RMAN: Recovery Manager,是备份和恢复数据库的管理工具建立备份和恢复的server process,在o...
    99+
    2024-04-02
  • Java文件操作实例详解
    本文实例为大家分享了Java文件操作的具体代码,供大家参考,具体内容如下 简介 本程序主要采用了FileInputStream和FileOutputStream两类对文件进行操作。具...
    99+
    2024-04-02
  • java文件读写操作实例详解
    目录File类File类的构造方法创建功能判断获取删除IO流字节流写数据小问题总结File类 它是文件和目录路径名的抽象表示。 文件和目录是可以通过File封装成对象的。 对于Fil...
    99+
    2024-04-02
  • 一文详解Java中的Stream的汇总和分组操作
    目录前言一、查找流中的最大值和最小值二、汇总三、连接字符串四、分组1、分组2、多级分组3、按子组数据进行划分后记前言 在前面的文章中其实大家也已经看到我使用过collect(Coll...
    99+
    2024-04-02
  • node里的filesystem模块文件读写操作详解
    目录一、是什么二、文件知识权限位 mode标识位文件描述为 fd三、方法文件读取fs.readFileSyncfs.readFile文件写入writeFileSyncwriteFil...
    99+
    2024-04-02
  • Python文件相关操作和方法汇总大全
    目录os.path文件文件读写文件删除文件复制移动目录创建目录删除目录复制目录枚举目录遍历(游走)目录文件名模式匹配fnmatchglob临时文件与目录前言:  Pytho...
    99+
    2024-04-02
  • Rust 中的文件操作示例详解
    目录文件路径文件创建和删除目录创建和删除文件创建和删除文件读取和写入文件打开文件读取文件写入相关资料文件路径 想要打开或者创建一个文件,首先要指定文件的路径。 Rust 中的路径操作...
    99+
    2024-04-02
  • python shutil操作文件实例讲解
    1、使用函数shutil.make_archive()创建归档文件,并返回归档后的名称。 import shutil path_1 = r'D:\PycharmProjects\...
    99+
    2024-04-02
  • C#实现XML文件操作详解
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-23
    C# XML文件操作 C# XML 操作 C# XML
  • python读写删除复制文件操作方法详细实例总结
    python读文件操作 1. read三种不同的方式 f = open('hello.txt') #'hello.txt'指的是文件的名称 while True: text ...
    99+
    2024-04-02
  • python文件操作详解
    文件操作是编程中必不可少的,配置文件,数据存储都是对文件操作;按文件操作与格式主要内容如下图: 文件基本操作为打开,读取,写入,关闭,我们按这个过程来详解讲解。 1.一个例子搞定打开,读取与关闭: 准备工作: 1>新建文件:E:\w...
    99+
    2023-01-31
    详解 操作 文件
  • C语言中炫酷的文件操作实例详解
    目录什么是文件程序文件数据文件 (本文重点)文件名文件的打开和关闭文件指针文件函数相对路径与绝对路径输入输出流二进制读写fwirtefread总结什么是文件 磁盘上的文件是文件 但是...
    99+
    2024-04-02
  • Python常见文件操作的示例详解
    目录从文件中读取数据为什么要提供文件路径逐行读取创建一个包含文件各行内容的列表使用文件中的内容包含千位以上的大型文件圆周率中包含你的生日吗写入文件附加到文件从文件中读取数据 1:读取...
    99+
    2024-04-02
  • C++文件的操作及小实验示例代码详解
    目录写文件:读文件:实验介绍代码部分:查看文件操作:对于文件,它是一个流对象,对文件的操作无非是读和写,我先来介绍一下写文件: 写文件: 写文件有五步: 1.包含头文件 #inclu...
    99+
    2024-04-02
  • Python文件的操作示例的详细讲解
    目录1. 文件的读写原理:2. 常用的文件打开模式3. 文件对象的常用方法4. 目录的相关操作1. 文件的读写原理: 文件的读写称为I/O操作。 操作原理: .py文件是用解释器...
    99+
    2024-04-02
  • Go语言文件读写操作案例详解
    目录基本介绍文件基本操作读操作写操作写操作案例查看文件或目录是否存在拷贝文件基本介绍 文件,对我们并不陌生,文件是数据源(保存数据的地方)的 一种 输入流和输出流 文件在程序中是以流...
    99+
    2024-04-02
  • 文件操作和IO详解
    文件操作 和 IO 文件,File 这个概念,在计算机里,也是“一词多用”. 文件的狭义和广义 狭义的文件: 指的是硬盘上的文件和目录(文件夹) 广义的文件: 泛指计算机中很多的软硬件资源.操作系统...
    99+
    2023-10-25
    网络 java-ee 学习 学习方法 面试
  • Python文件简单操作及openpyxl操作excel文件详解
    目录一、文件的操作流程1、打开文件2、文件操作——读、写、修改3、关闭文件二、openpyxl操作excel文件1、导入模块2、创建文件3、打开已有excel...
    99+
    2024-04-02
  • C语言实现对文件进行操作的示例详解
    目录前言文件指针文件的打开和关闭文件的打开方式文件读写函数二进制方式存储文件对文件进行拷贝文件随机读写函数文件缓冲区前言 文件操作 在运行程序的时候,此时数据是存放在内存中,当程序退...
    99+
    2023-05-15
    C语言实现文件操作 C语言文件操作 C语言文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作