Node.js 处理 File

对于 file 的理解,此处

fs 模块

Node.js 提供了处理文件系统的内置模块fs 模块,该名称是 file system 的缩写

  • 内置意味着你无需从 npm 进行安装

  • 可以使用 fs 模块对文件和目录执行多种操作

  • fs 模块具有 promises 命名空间,该命名空间具有所有方法的 promise 版本

    这是使用 fs 模块的首选方法,它可避免回调发生混乱或避免阻止同步方法,让你可以使用 async

    const fs = require("fs").promises;
  • 对 fs 模块执行的大多数操作都有同步和异步选项

常规使用

列出目录中的内容

  • 可以使用 readdir 方法或 readdirasync 方法

    const items = await fs.readdir("stores");       // await 属于同步和异步编程的内容【建议自行查看】,stores 是路径【建议相对路径】
    console.log(items); // 列表形式输出目录中的内容,每个 item 是 Dirent 对象
  • 判断文件目录,使用 Dirent 对象具有 isFileisDirectory 方法

运用递归遍历目录树

/**
* findFiles(folderName) 递归遍历目录树
*
* folderName 目录路径
*/
function findFiles(folderName) { const items = await fs.readdir(folderName, { withFileTypes: true }); // 获取目录中的元素 // 用 forEach 遍历 items
items.forEach((item) => {
if (item.isDirectory()) { // item.isDirectory() 递归条件【出口】
findFiles(`${folderName}/${item.name}`); // 递归调用
} else {
console.log(`Found file: ${item.name} in folder: ${folderName}`);
}
});
}

创建文件和目录

可使用 fs 模块以编程方式创建、删除、复制、移动和操作系统上的文件和目录

  • 创建目录 mkdir 方法,注意如果尝试创建的目录已存在将引发错误
  • 创建文件使用 fs.writeFile() 方法来创建文件,如果此文件已存在则会将其覆盖

读写文件

  • 从文件读取数据 fs.readFile() 方法读取文件,返回对象是一个 Buffer 对象
  • 要将数据写入文件,请使用相同的 writeFile 方法,不同的是应传入要作为第三个参数写入的数据
  • 将数据追加到文件,可以将标志 a 传递到 writeFile 方法来执行此操作

分析文件中的数据,JavaScript 包含用于 JSON 文件的内置分析程序,JSON.parse() 方法可以实现此目的

// 在当前目录添加 totals.txt,每次使用追加 'Hello '
await fs.writeFile(
path.join(__dirname, "totals.txt"), // __dirname 一个全局常量,下面有简介
'Hello ',
{ flag: "a" }
);

path 模块

在 Node.js 内置模块中 path 模块专用于处理路径

  • 拼接路径 path.join() 方法,意义增强移植性应对不同操作系统的目录分隔符
  • 确定文件扩展名 path.extname()
  • path.parse() 获取有关路径或文件的大多数所需信息,包含你所在的当前目录、文件的名称、文件扩展名,甚至是不带扩展名的文件名称

Node.js 内置常量

  • 确认当前目录完整路径通过内置常量 __dirname
  • 确认当前文件完整路径通过内置常量 __filename

Node.js 处理 File的更多相关文章

  1. node.js的File模块

    1.Node.js是什么? (1) Nodejs是为了开发高性能的服务器而诞生的一种技术 (2) 简单的说 Node.js 就是运行在服务端的 JavaScript,基于V8进行运行 (3) Node ...

  2. node.js & fs & file read & file write

    node.js & fs & file read & file write https://nodejs.org/api/fs.html const fs = require( ...

  3. node.js & create file

    node.js & create file node js create file if not exists https://nodejs.org/api/fs.html#fs_fs_ope ...

  4. [Node.js] 使用File API 异步上传文件

    原文地址:http://www.moye.me/2014/11/05/html5-filereader/ 最近在做一个网盘的项目,不出意外的涉及到大文件的上传,那么问题来了:如何实时的显示文件上传的进 ...

  5. Node.js学习 - File Operation

    同步异步 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的方法函数最后一个参数为 ...

  6. Node.js Base64 Encoding和Decoding

    如何在Node.js中encode一个字符串呢?是否也像在PHP中使用base64_encode()一样简单? 在Node.js中有许多encoding字符串的方法,而不用像在JavaScript中那 ...

  7. NAIO & Node.js All In One

    NAIO & Node.js All In One Node.js Tutorials https://nodejs.org/en/docs/ https://nodejs.org/en/do ...

  8. [Node.js] Read a File in Node.js with fs.readFile and fs.readFileSync

    We'll read a csv file in node.js both synchronously, and asynchronously. The file we're reading is a ...

  9. [Node.js] Write or Append to a File in Node.js with fs.writeFile and fs.writeFileSync

    In node.js, you can require fs, and then call fs.writeFile with the filename, and data to write to t ...

  10. node.js delete directory & file system

    node.js delete directory & file system delete a not empty directory https://nodejs.org/api/fs.ht ...

随机推荐

  1. 基于 ESP8266_RTOS_SDK 驱动 DHT11

    概述 DHT11模块使用一根data线实现信号触发以及数据反馈,信号格式参考如下 https://zhuanlan.zhihu.com/p/347904660 本文使用GPIO中断的方式采集反馈数据 ...

  2. java stream 简单函数

    写在前面 本文为笔者学习的一些心得,如有问题,评论请轻喷 本文分为以下部分: 中间操作 终止操作 归纳 中间操作 对 list 进行操作,返回一个新的 list 主要函数 作用 filter 过滤操作 ...

  3. webview2 示例 Samples Selenium

    https://github.com/MicrosoftEdge/WebView2Samples https://learn.microsoft.com/zh-cn/microsoft-edge/we ...

  4. C#命令行参数解析库System.CommandLine介绍

    命令行参数 平常在日常的开发过程中,会经常用到命令行工具.如cmd下的各种命令. 以下为sc命令执行后的截图,可以看到,由于没有输入任何附带参数,所以程序并未执行任何操作,只是输出了描述和用法. 系统 ...

  5. MySQL查看实时执行的SQL语句

    MySQL默认不能实时查看执行的SQL语句,因为这会消耗一定的资源. 要开启这个功能,稍微配置一下,打开这个LOG记录就可以了. 1 查看LOG功能 首先,查看是否已经开启实时SQL语句记录. mys ...

  6. Understanding Swift’s value type thread safety - 代码分析(一)

    结构体并不代表线程安全,swift在此上未做保证 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurrentPe ...

  7. (性能测试)--记录一次高可用场景导致CPU资源升高

    测试场景:高可用场景--限流测试: 被测交易:查询类交易,HTTP协议: 交易链路:jmeter - web - coimpre(前置服务) -- coimbp -- cobp (coimbp .co ...

  8. kettle从入门到精通 第十五课 kettle 映射 (子转换)01

    1.kettle 里面的映射和java代码里面的封装是一个概念,就是将一个可复用的模块单独抽离为公共模块供其他模块引用,用到的步骤或者组件如下 2.构建子映射,子映射需要用到映射输入规范和映射输出规范 ...

  9. Vue3:介绍

    Vue 3 相较于 Vue 2 在多个方面进行了改进和优化,主要优势包括但不限于以下几个方面: 响应式系统优化: Vue 3 引入了基于 Proxy 的响应式系统,取代了 Vue 2 中基于 Obje ...

  10. 项目管理--PMBOK 读书笔记(12)【项目采购管理】

      1.采购计划三要素 1)采购管理计划:预审合格的卖方,供方选择标准: 2)采购 SOW:采购工作说明书应详细描述拟采购的产品.服务或成果: 3)采购文件   2.合同类型 1)总价合同:范围清楚, ...