nodejs系列:15.node的fs模块之删除文件

1,181 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

系列介绍

该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。

这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。

nodejs介绍

nodejs摘抄过来的node介绍:

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具!

Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 的性能非常好。

Node.js 应用程序在单个进程中运行,无需为每个请求创建新的线程。 Node.js 在其标准库中提供了一组异步的 I/O 原语,以防止 JavaScript 代码阻塞,通常,Node.js 中的库是使用非阻塞范式编写的,使得阻塞行为成为异常而不是常态。

当 Node.js 执行 I/O 操作时(比如从网络读取、访问数据库或文件系统),Node.js 将在响应返回时恢复操作(而不是阻塞线程和浪费 CPU 周期等待)。

这允许 Node.js 使用单个服务器处理数千个并发连接,而不会引入管理线程并发(这可能是错误的重要来源)的负担。

Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在无需学习完全不同的语言,就可以编写除客户端代码之外的服务器端代码。

在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为你不必等待所有用户更新他们的浏览器,你负责通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,你还可以通过运行带有标志的 Node.js 来启用特定的实验性功能。

我们可以从介绍里面看到,nodejs还是挺棒的。

nodejs遵循的是commomjs规范,所以使用nodejs的时候,需要按照commomjs规范来编写代码。

环境安装

实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。

以下是nodejs的安装地址,如果你没有安装的话,可以先把它安装上。安装了可以忽略这一步,跳到下面一步。

nodejs安装

fs模块

在nodejs系列前面几篇文章里,我们介绍了url模块、querystring模块、path模块等。接下来,我们要介绍一下node里面另外一个重要的模块fs模块。

fs模块是什么?

fs是file system的缩写,即文件系统。该模块提供了本地文件的读写能力,是以模仿标准POSIX函数的方式与文件系统进行交互。

如果我们想要操作文件系统,就需要用到fs模块了。

本篇主要介绍fs模块的删除文件的方法

删除文件方法

unlink

使用方法

fs.unlink(path,callback)

参数介绍:

  • path:要删除文件的路径
  • callback:删除文件后执行回调函数

unlink方法是异步的,不会阻塞当前同步代码的执行

unlinkSync

使用方法


fs.unlinkSync(path)

参数介绍:

  • path:要删除文件的路径

unlinkSync方法是同步的,会阻塞当前同步代码的执行

使用

删除文件的方法介绍完,接下来我们使用一下这些方法

先创建一个index.js文件,在里面引入fs模块


const fs = require("fs")

创建一个text.txt文件,使用删除文件方法时,就删除这个text.txt文件

unlink

使用unlink方法,删除text.txt文件


fs.unlink('./text.txt',(err)=>{
    if(err) throw err
    console.log('删除文件');
})

在cmd里,用node运行index.js文件,查看打印日志

0001.png

我们看到,删除文件打印出来了。到文件夹里面查看,发现text.txt文件也被删除了。

上面我们提到unlink方法是异步的,不会阻塞当前同步代码的执行,我们试验一下。

要再创建一个text.txt文件,因为上面已经把text.txt文件删除了。

修改一下上面代码


fs.unlink('./text.txt',(err)=>{
    if(err) throw err
    console.log('删除文件');
})
console.log("执行")

在cmd里,用node运行index.js文件,查看打印日志

0002.png

我们可以看到,先是执行打印出来,然后删除文件才打印出来。说明unlink方法是异步的。

unlinkSync

我们使用unlinkSync方法,删除text.txt文件。

要再创建一个text.txt文件,因为上面已经把text.txt文件删除了。


let res = fs.unlinkSync("./text.txt")
console.log(res)

在cmd里,用node运行index.js文件,查看打印日志

0003.png

我们可以看到,打印出来是undefined。到文件夹里查看,发现text.txt文件被删除了。

上面我们提到,unlinkSync方法是同步的,会阻塞当前同步代码的执行,我们试验一下。

要再创建一个text.txt文件,因为上面已经把text.txt文件删除了。

修改一下上面代码


let res = fs.unlinkSync("./text.txt")
console.log(res)
console.log("执行")

在cmd里,用node运行index.js文件,查看打印日志

0004.png

我们可以看到,先是undefined打印出来,然后执行才打印出来,说明unlinkSync方法是同步的

小结

本篇文章里,主要介绍了fs模块删除文件的方法,如下:

方法区别
unlink异步删除文件,不会阻塞当前同步代码执行
unlinkSync同步删除文件,会阻塞当前同步代码执行

最后,放上自己比较喜欢的一句诗句:

千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》