node文件操作
发布于 3 年前 作者 yzhao 4438 次浏览 来自 分享
#原文链接: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();
}
回到顶部