当前位置: 首页 > article >正文

【前端知识】Node——使用fs模块对文件、文件夹的操作

一、fs的三种读取文件内容的方式

const fs = require('fs');

// 1.同步读取
const res1 = fs.readFileSync('../test.txt', {
    encoding: 'utf-8'
});
console.log(res1);

// 2.异步读取:回调函数
fs.readFile('../test.txt', {
    encoding: 'utf-8'
}, (err, data) => {
    if(err){
        console.log('error message:', err);
        return;
    }
    console.log('读取文件结果:', data);
})

// 3.异步读取:Promise
fs.promises.readFile('../test.txt', {
    encoding: 'utf-8'
}).then(res => {
    console.log(res);
}).catch(err => {
    console.log(err);
})

二、fs获取文件标识符

const fs = require('fs');

fs.open('../test.txt', (err, fd) => {
    if(err){
        console.log(err);
        return false;
    }
    // 1.获取文件标识符fd
    console.log(fd);
    // 2.读取文件信息
    fs.fstat(fd, (err, stats) => {
        if(err){
            console.log(err);
            return false;
        }
        console.log(stats);
    })
    // 3.关闭文件
    fs.close(fd);
})

三、fs文件写入及选项参数

const fs = require('fs');

// 1.客户端传递文本
const text = 'hello node!';

// 2.文件的写入
fs.writeFile('../abc.txt', text, {
    encoding: 'utf-8',
    flag: 'w'
}, (err) => {
    if(err){
        console.log(err);
        return;
    }
    console.log('write succes!');
})
// 3.文件的追加写入
fs.writeFile('../abc.txt', text, {
    encoding: 'utf-8',
    flag: 'a'
}, (err) => {
    if(err){
        console.log(err);
        return;
    }
    console.log('append succes!');
})

四、fs对文件夹进行相关操作

const fs = require('fs');

// 1.创建文件夹
fs.mkdir('./test-dir', (err => {
    console.log(err);
}));

// 2.读取文件夹,获取其中文件的字符串
fs.readdir('./test-dir', (err, files) => {
    if(err){
        console.log(err);
        return;
    }
    console.log(files);
})

// 3.读取文件夹,获取其中文件的信息
fs.readdir('./test-dir', { withFileTypes: true, }, (err, files) => {
    if(err){
        console.log(err);
        return;
    }
    console.log(files);
    files.forEach(f => {
        if(f.isDirectory()){
            console.log(`这是一个文件夹,名称为:${f.name}`);
        }else{
            console.log(`这是一个文件,名称为:${f.name}`);
        }
    })
})

// 4.递归读取文件夹中所有文件
function readDirectory(path){
    fs.readdir(path, {
        withFileTypes: true
    }, (err, files) => {
        files.forEach(f => {
            if(f.isDirectory()){
                readDirectory(`${path}/${f.name}`)
            }else{
                console.log(`这是一个文件,名称为:${f.name}`);
            }
        })
    })
}
// readDirectory('./test-dir')

// 5.对文件、文件夹重命名
fs.rename('./test-dir', 'test-dir-1', (err) => {
    console.log(err);
})

http://www.kler.cn/news/134154.html

相关文章:

  • 【kafka】使用docker启动kafka
  • 2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷
  • 【C++历练之路】list的重要接口||底层逻辑的三个封装以及模拟实现
  • Kubernetes学习-概念2
  • 你知道什么是SaaS吗?
  • 在Linux上安装Oracle 数据库 11g (含静默方式安装)
  • 浅析AcrelEMS-CIA机场智慧能源管平台解决方案-安科瑞 蒋静
  • Kafka 集群实现数据同步
  • Spring 配置
  • 【案例】可视化大屏
  • 度加创作工具 演示
  • 深入理解注意力机制(下)——缩放点积注意力及示例
  • 前端uniapp列表下拉到底部加载下一页列表【下拉加载页面/带源码/实战】
  • 【洛谷 P1182】数列分段 Section II 题解(二分答案+循环)
  • WSL 2 更改默认安装的 Linux 发行版
  • 基于单片机C51全自动洗衣机仿真设计
  • 异常语法详解
  • 飞鼠异地组网工具实战之访问k8s集群内部服务
  • 如何在虚拟机的Ubuntu22.04中设置静态IP地址
  • Vue3+ElementPlus纯前端分页(手撕分页),无需修改后端
  • 全新云开发工具箱:融合多项功能的微信小程序源码解决方案
  • 深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用
  • 选择最适合你的框架和语言,打造出色的Windows界面程序
  • Java学习笔记43——函数式接口
  • C++多线程编程(1):线程的创建方式
  • Node.js之TCP(net)
  • python 词云 wordcloud使用paddle模式 庆余年人物分析--不是特别准,可以看着玩一玩
  • 基于深度学习的单帧图像超分辨率重建综述
  • Postman接收列表、数组参数@RequestParam List<String> ids
  • C练习题_13