node文件操作
#原文链接:https://blog.csdn.net/github_38140984/article/details/83006101
#原文作者;Panda Shen
const fs = require("fs");
1、异步读取文件
fs.readFile("1.txt", "utf8", (err, data) => {
console.log(err);
console.log(data);
});
2、异步写入文件
fs.writeFile("1.txt", "写入的内容", err => {
if (!err) {
fs.readFile("2.txt", "utf8", (err, data) => {
console.log(data); //写入的内容
});
}
});
#fs.appendFileSync 异步追加写入文件,用法同上
##适用场景:可在循环添加内容时使用
3、异步拷贝写入文件
fs.copyFile("3.txt", "4.txt", () => {
fs.readFile("4.txt", "utf8", (err, data) => {
console.log(data);
});
})
4、打开文件
#path文件路径,flag标识位,mode权限位(默认0o666),callback回调函数
fs.open("4.txt", "r", (err, fd) => {
console.log(fd);
});
5、关闭文件
#第一个参数为关闭文件的文件描述符fd;第二个参数为回调函数,关闭后执行
fs.open("4.txt", "r", (err, fd) => {
fs.close(fd, err => {
console.log("关闭成功");
});
});
6、读取文件
#针对于文件较大或未知,无法一次性读取全部,采用read多次读取到buffer中
#文件描述符fd,将内容读取到buffer,向buffer写入的初始位置(整数)offset,读取长度length,读取文件的初始位置position,回调函数
fs.open("6.txt", "r", (err, fd) => {
// 读取文件
fs.read(fd, buf, 0, 3, 0, (err, bytesRead, buffer) => {
// 继续读取
fs.read(fd, buf, 3, 3, 3, (err, bytesRead, buffer) => {
console.log(bytesRead); //实际读取的字节数
console.log(buffer); //被写入的缓存区对象
console.log(buffer.toString());
});
});
})
7、写入文件、同步磁盘缓存
#针对于文件较大或未知,无法一次性读取全部,采用write分段写入
#文件描述符fd,将内容读取到buffer,向buffer写入的初始位置(整数)offset,读取长度length,读取文件的初始位置position,回调函数
fs.open("6.txt", "r+", (err, fd) => {
// 读取 buf 向文件写入数据
fs.write(fd, buf, 3, 6, 3, (err, bytesWritten, buffer) => {
// 同步磁盘缓存
fs.fsync(fd, err => {
// 关闭文件
fs.close(fd, err => {
console.log("关闭文件");
});
});
});
})
8、异步查看操作权限
fs.access("文件/的/路径", err => {
if (err) {
console.error("不可访问");
} else {
console.log("可读可写");
}
});
9、异步获取stats对象
#stats对象存储着关于这个文件/文件夹的重要信息,如创建事件、最后访问时间等...
fs.stat("文件/的/路径.txt", (err, statObj) => {
console.log(statObj);
});
10、异步创建目录
#在bb文件夹下创建cc文件夹,前提是确保aa、bb都存在
fs.mkdir("aa/bb/cc", (err, statObj) => {
if (!err) console.log("创建成功");
});
11、异步读取目录
fs.readdir("a/b", (err, data) => {
if (!err) console.log(data);
});
12、异步删除文件目录
fs.rmdir("a/b", err => {
if (!err) console.log("删除成功");
});
13、异步删除文件
fs.unlink("a/index.js", err => {
if (!err) console.log("删除成功");
});
14、异步async/await
function promisify(fn) {
return new Promise((resolve, reject) => {
resolve();
//reject();
});
}
async function test(){
await promisify();
}