Node.js入门笔记(4):fs模块用法

150 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

读取文件

const fs = require('fs');
// 异步读取
fs.readFile('node.txt',(err,data)=>{
    if(err) throw err
    console.log(data);//<Buffer 68 65 6c 6c 6f 20 6e ...more bytes>
})
// 同步读取
let data  = fs.readFileSync('node.txt',{encoding:'utf-8'})
console.log(data);//hello node hello node hello node hello node

如果文件大小有上百MB,需要使用流stream的方法读取文件,readFile是异步的,而readFileSync是同步读取的

写入文件

//fs.writeFile('文件','写入的内容',{flag:‘权限’,编码格式})
fs.writeFile("node1.txt","hello node1",{flag:"a",encoding:"utf-8"},(err)=>{
    if(err){
        console.log(err);
        return
    }
    console.log("666");
})
r以读取模式打开文件。如果文件不存在抛出异常。
r+以读写模式打开文件。如果文件不存在抛出异常。
rs以同步的方式读取文件。
rs+以同步的方式读取和写入文件。
w以写入模式打开文件,如果文件不存在则创建。
wx类似 'w',但是如果文件路径存在,则文件写入失败。
w+以读写模式打开文件,如果文件不存在则创建。
wx+类似 'w+', 但是如果文件路径存在,则文件读写失败。
a以追加模式打开文件,如果文件不存在则创建。
ax类似 'a', 但是如果文件路径存在,则文件追加失败。
a+以读取追加模式打开文件,如果文件不存在则创建。
ax+类似 'a+', 但是如果文件路径存在,则文件读取追加失败。

获取文件状态

可以在调用open read write方法前进行判断文件是否存在,res会输出文件的信息

fs.stat('node.txt',(err,res)=>{
    if(err) throw err
    console.log(res);//<Buffer 68 65 6c 6c 6f 20 6e ...more bytes>
})

image.png

获取目录所有文件夹

首先在文件夹中建立几个测试的文件,让我们来看下通过相对路径获取一下我文件夹下面的所有文件名,这里总共有几个文件和一个文件夹,循环的时候我们判断我们的子文件是不是文件夹,如果是文件夹的话就执行递归继续变成一个文件夹继续往下递归,通过这个方式来获取我们一个文件夹下面的所有文件

image.png 这里总共涉及到俩个api,一个是readir是获取目录下的所有文件名,一个是isDirectory判断是否是文件夹,

function getAllName(path){
    fs.readdir(path,function(err,res){
        for(let subPath of res){
            // 使用同步方法
            let statObj = fs.statSync(path+"/"+subPath)
            if(statObj.isDirectory()){
                getAllName(path+"/"+subPath)
            }else{
                console.log('File:',subPath);
            }
        }
    })
}
getAllName('../node练习')
// File: fs.js
// File: node.txt
// File: node1.txt
// File: package-lock.json
// File: test.js
// File: test1.js
// File: test.2js
// File: test1.js