Node.js中的fs 模块

//  file system 是node的文件处理模块

const fs = require('fs')
const path = require('path')
// 1. readFile 此函数用来异步读取文件,并在回调中可以获取读取文件结果
// 这个方法会将一个文件的全部内容都读到内存中,适合于体积小的文本,如果文件有数百MB大小,则建议使用stream
let filePath = path.join(__dirname, 'test.txt')

fs.readFile(filePath, 'utf8', ( error, data) => {
    console.log('readFile:', error, data)
})

// 1.1 readFileSync 是readFile 的同步版本可以直接返回读取结果
const data1 = fs.readFileSync(filePath,  'utf8')
// const data1 = fs.readFileSync(filePath, {encoding:'UTF-8'} )
console.log('readFileSync:', data1)


// 2. writeFile 写入文件,第一参数为文件名,如果不存在则会尝试创建它
let writePath = path.join(__dirname, 'test1.txt')
let data2 = '这是一个写入的数据'

// fs.writeFile(writePath, data2 , 'utf8', ( res ) => {
//     console.log('writeFile:', res)
// })

let writePath1 = path.join(__dirname, 'test2.txt')
// 2.1 writeFileSync 写入文件,writeFile 的同步版本
// const data3 = fs.writeFileSync( writePath1, data2, 'utf8')
// console.log('writeFileSync:', data3)

// 3. stat(path, callback) 用来获取文件的状态,通常在调用open(),read() 等方法之前,用fs.stat方法
// 判断该文件是否存在,如果存在就会返回文件状态信息
fs.stat(filePath, (error, result) => {
    // console.log(result)
})
// 3.1 同步版本
const data4 = fs.statSync(filePath)

// 4. readdir(path, function(error, result)) 读取目录下文件及目录
fs.readdir(__dirname, (error, result) => {
    console.log('readdir:', error,result)
    // [ 'buffer.js', 'fs.js', 'test.txt' ]
})

// 4.1 获取目录下所有子文件
function getDirFile(dirPath){
    fs.readdir(dirPath, (error, result) =>{
        console.log('result',result)
        for (let item of result) {
            const fileStatus = fs.statSync(path.join(dirPath, item))
            // console.log('fileStatus:',fileStatus)
        //    console.log(fileStatus.isDirectory()) // 判断是否为文件夹
            if(fileStatus.isDirectory()){
                getDirFile(path.join(dirPath, item))
            }
        }
    })
}
getDirFile(__dirname)

猜你喜欢

转载自www.cnblogs.com/liea/p/12079302.html