基于node的"文件CURD"操作以及"文件夹CURD"操作

mac2026-08-07  10

基于node的"文件CURD"操作以及"文件夹CURD"操作

文章目录

基于node的"文件CURD"操作以及"文件夹CURD"操作一、 node 准备引入依赖模块 二、 文件CURD操作C 操作: (创建文件)U 操作: (修改文件)R 操作: (读取文件内容)D 操作: (删除文件) 三、 文件夹CURD操作文件夹C 操作: (创建文件夹)文件夹U 操作: (修改文件夹, 与文件操作类似)文件夹R 操作: (读取文件夹内容 '读取文件夹下面的文件名称')文件夹D 操作: (删除文件夹 '这个算是fs中最麻烦的操作了。。。。') 有了这些指令包之后,我们有时候就能更愉快的操作文件了四、 部分相关原代码 gitee 地址

一、 node 准备

引入依赖模块

该 fs 为node的内置模块,所以安装nodejs之后,自然就可以直接使用 fs 模块;

var fs = require("fs");

node 插件查询: npmjs官网:https://www.npmjs.com/ 有了这些东西,就可以更愉快的敲代码了(滑稽)

这里是nodejs fs 模块API说明: fs中文文档: http://nodejs.cn/api/fs.html



二、 文件CURD操作

C 操作: (创建文件)

fs.writeFile(url, content, [option], callback());

参数参数类型备注urlString文件创建的路径contentString文件的内容[option]Object{encoding:“utf-8”,flag:“w”}callback()function执行该方法的回调函数

实例:

// 在当前路径创建一个名为 file.txt 的文件, 文件内容 “create by code” fs.writeFile("./file.txt", "create by code", {"flag":"w"}, function(error){ if(error){ // 当创建文件失败时,系统会返回一个错误的提示信息,node将该信息作为一个回调参数置入 error 中 console.log("文件创建失败!!!错误提示信息:", error); }else{ console.log("文件创建成功!!!"); } });

当重复执行这段代码时,不会重复生成多个文件,而是会覆盖原文件(包括内容)


U 操作: (修改文件)

修改文件内容: fs.writeFile(url, content, callback());

追加文件内容: fs.appendFile(url, appendContent, callback());

修改文件名字 - 移动文件位置: fs.rename(oldPath, newPath, callback());

参数参数类型备注urlString文件创建的路径oldPathString文件原始路径(原文件名)newPathString文件新的路径(新文件名)contentString文件的内容appendContentString文件追加的内容callback()function执行该方法的回调函数

实例:

// fs.appendFile(url, appendContent, callback()) // 为 file.txt 文件, 追加文件内容 “append words!!!” fs.appendFile("./file.txt", appendContent, (error) => { if(error){ console.log("文件内容追加失败!!!错误提示信息:", error); }else{ console.log("文件内容追加成功!!!"); } }); // fs.rename(oldPath, newPath, callback()) // 修改 file.txt 文件的名称为: “newName.txt” fs.rename("./file.txt", "./newName.txt", (error) => { if(error){ console.log("文件名称修改失败!!!错误提示信息:", error); }else{ console.log("文件名称修改成功!!!"); } });
R 操作: (读取文件内容)

fs.readFile(url, callback(error, data));

参数参数类型备注urlString文件的路径callback()function执行该方法的回调函数

实例:

// 读取当前文件夹下的 file.txt 的文件内容 // |error: 错误提示信息;data: 成功时,文件内容 fs.readFile("./file.txt", (error, data) => { if(error){ console.log("文件读取失败!!!错误提示信息:", error); }else{ console.log("文件读取成功!!!文件内容: ", data); } });
D 操作: (删除文件)

fs.unlink(url, callback(error));

参数参数类型备注urlString文件的路径callback()function执行该方法的回调函数

实例:

// 删除当前文件夹下的 file.txt 的文件 fs.unlink("./file.txt", (error) => { if(error){ console.log("文件删除失败!!!错误提示信息:", error); }else{ console.log("文件删除成功!!!文件内容: "); } });

三、 文件夹CURD操作

文件夹C 操作: (创建文件夹)

fs.mkdir(url, callback());

参数参数类型备注urlString文件创建的路径callback()function执行该方法的回调函数

实例:

// 在当前文件夹创建一个名为 folder 的文件夹 fs.mkdir("./folder", (error) => { if(error){ // 当创建文件失败时,系统会返回一个错误的提示信息,node将该信息作为一个回调参数置入 error 中 console.log("文件夹创建失败!!!错误提示信息:", error); }else{ console.log("文件夹创建成功!!!"); } });
文件夹U 操作: (修改文件夹, 与文件操作类似)

fs.rename(oldFolder, newFolder, callback(error));

参数参数类型备注urlString文件创建的路径oldPathString文件原始路径(原文件名)newPathString文件新的路径(新文件名)callback()function执行该方法的回调函数

实例:

// 将当前文件下的文件 folder 更名为 newFolder fs.rename("./oldFolder", "./newFolder", (error) => { if(error){ console.log("文件名称修改失败!!!错误提示信息:", error); }else{ console.log("文件名称修改成功!!!"); } });
文件夹R 操作: (读取文件夹内容 ‘读取文件夹下面的文件名称’)

fs.readdir(url, [{option}], callback())

参数参数类型备注urlString文件创建的路径[option]Object{encoding:编码方式,withFileTypes,false}callback()function执行该方法的回调函数

实例:

// 读取当前文件下的文件 folder 的内容 fs.readdir("./folder", (error, data) => { if(error){ console.log("文件夹读取失败!!!错误提示信息:", error); }else{ console.log("文件夹读取成功!!!文件夹内容: ", data); } });
文件夹D 操作: (删除文件夹 ‘这个算是fs中最麻烦的操作了。。。。’)

node的内置对象fs是不允许直接删除非空文件夹的,所以在删除文件夹时,需要先删除文件夹内部的所有文件

fs.rmdir(url, callback(error));

参数参数类型备注urlString需要删除文件夹的路径callback()function执行该方法的回调函数

实例:1. 删除空文件夹

// 删除空文件夹 fs.rmdir("./folder", (error) => { if(error){ console.log("文件夹删除失败!!!错误提示信息:", error); }else{ console.log("文件夹删除成功!!!"); } });

实例:2. 删除非空文件夹(递归)

// 这个是比较基础的,当删除的文件夹中嵌套文件夹,并且嵌套的文件夹非空,就会删除失败 // 删除文件 function delFile(url){ return new Promise(resolve => { fs.unlink("./" + url, (error) =>{ if(error)console.log(error) else resolve(); }); // 当前路径下的 url 文件 }); } function delFolder(){ // 遍历目录 fs.readdir("./folder",(error, dir) => { if(error) console.log(error) else{ if(dir.length > 0){ delFile(dir[0]).then(()=>{ // 不能使用for遍历 delfolder(); // 直到文件夹中的文件数量为空 }); } } }); // 为什么这里要用递归,而不用for循环删除呢? // 主要是因为:fs的普通操作都属于异步操作 // 也就是说,当使用for删除的时候,可能,还没有删除结束,但是rmdir()方法就开始执行了,这样依然会删除失败(folder依然有文件) fs.rmdir("./folder", (error) => { if(error){ console.log("文件夹删除失败!!!错误提示信息:", error); }else{ console.log("文件夹删除成功!!!"); } }); }

相对于其他删除方法来说,递归是比较简单的解决方法,但是递归的稳定性就不一定了。。。

于是乎,我又发现了某些了不得的方法,让我们继续。。。

实例:3. 删除非空文件夹(cmd)

是的,你没有看错!就是cmd命令删除!!!简单!!!实用!!!可靠!!!您值得拥有!!!!

引入依赖包: npm i node-cmd

var cmd = require("node-cmd"); cmd.get("rmdir /s/q folder"); // 啊!我完事儿了~

有了这些指令包之后,我们有时候就能更愉快的操作文件了

四、 部分相关原代码 gitee 地址

gitee地址:https://gitee.com/PursuitComesFromLove//tree/master/node%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C

话说下面这些字,只有被神眷恋的人,才能看见哦:

开始上面的这些方法,在 cmd 命令里都可以操作哟!比如 创建文件夹: mkdir folderName

最新回复(0)