【前端知识】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);
})

猜你喜欢

转载自blog.csdn.net/weixin_42919342/article/details/134497152