在进行这些操作之前,需要在js文件中导入fs模块
const fs = require("fs");
- const是定义一个常量,比较特殊的是,使用const定义时必须赋值,一旦被赋值就不能再修改。
一、操作文件夹
- 创建文件夹
-
fs.mkdir("test", function(err) { if (err) throw err; console.log("创建成功"); })
-
- 删除文件夹
-
fs.rmdir("test", err => { if (err) throw err; console.log("删除成功"); })
-
- 判断文件夹是否存在
- exists方法现在已经不推荐使用了。
-
fs.exists("test", (exists)=> { if (exists) { console.log("存在"); } else { console.log("不存在"); } })
- access方法在有的nodejs版本中需要写成 fs.constants.F_OK
-
fs.access('test', fs.constants.F_OK, (err) => { if(err) { console.log("文件夹不存在"); return; } console.log("文件夹存在"); })
二、操作文件
- 写入文件
-
fs.writeFile("123.txt", "hello word", err => { if(err) throw err; })
-
- 追加文字
-
fs.appendFile("123.txt", "啦啦", err => { if(err) throw err; })
-
- 修改文件名
-
fs.rename("C:/Users/Scr/Desktop/丽丽.bmp", "C:/Users/Scr/Desktop/lili.bmp", err => { if(err) throw err; console.log("ok"); })
-
- 删除文件
-
fs.unlink("123.txt", err => { if(err) throw err; console.log("删除完成"); })
-
- 获取文件相关属性
-
fs.stat("C:/Users/Scr/Desktop/lili.bmp", (err, stats) => { console.log(stats); })
-
- 监视文件
-
fs.watchFile("123.txt", (curr, prev) => {
console.log(curr.mtime); console.log(prev.mtime); })监视文件一般会有延迟,可以添加第二个参数,将延迟的时间缩短
-
fs.watchFile('123.txt', {persistent: true, interval: 10}, (curr, prev) => {
//这里是使用的是模板拼接 console.log(`the current mtime is: ${curr.mtime}`); console.log(`the previous mtime was: ${prev.mtime}`); });
-
三、文件流操作
一般拷贝文件的方法,适合拷贝小文件
"use strict"; const fs = require("fs"); //监视的文件 let currFile = "F:/BleRay.720P.rmvb"; //目标文件 let targetFile = "F:/movie"; //读文件的流 let rs = fs.createReadStream(currFile); //写文件的流 let ws = fs.createWriteStream(targetFile); //已经读取的文件大小 let currentCount = 0; //文件的总大小 let fileSize = fs.statSync(currFile).size; rs.on("data", (chunk) => { currentCount += chunk.length; //每一次获取到的数据---buffer //console.log(chunk); ws.write(chunk); console.log("进度:" + currentCount/fileSize + "%"); })
文件流的方式拷贝
"use strict"; //监视的文件 let currFile = "F:/BleRay.720P.rmvb"; //目标文件 let targetFile = "F:/movie"; const fs = require("fs"); //读文件的流 let rs = fs.createReadStream(currFile); //写文件的流 let ws = fs.createWriteStream(targetFile); //适合复制大文件,不能显示文件进度 rs.pipe(ws);