Nodejs中的fs模块

一、文件写入操作

writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容

语法:

writeFile(file, data[, options], callback) 异步
writeFileSync(file, data) 同步

参数:

file 文件名
data 要写入文件的数据
options 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
callback 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

代码:

// 1、导入fs模块
const fs = require('fs')
// 2、异步写入文件
fs.writeFile('./xxx.txt', '三人行, 则必有我师焉', err => {
    // err写入失败: 错误对象   写入成功: null
    if(err) {
        console.log('写入失败')
        return
    }
    console.log('写入成功')
})

// 2、同步写入文件
fs.writeFileSync('./data.txt', 'text')

二、追加写入

方式一、

语法:

appendFile(file, data, option, callback) 同步
appendFileSync(file, data) 异步

参数:

       

file 追加的文件
data 追加的内容
option 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
callback 操作后的回调

代码:

const fs = require('fs')


// 1、异步追加
fs.appendFile('./xxx.txt', '你说嘴巴嘟嘟,还是狗吧狗狗', err => {
    // 判断
    if(err) {
        console.log('写入失败~~')
        return
    }
    console.log('写入成功~~')
})


// 同步追加
fs.appendFileSync('./xxx.txt', '你说嘴巴嘟嘟,还是狗吧狗狗')

 方式二、

代码:

const fs = require('fs')

fs.writeFile('./xxx.txt', '你说嘴巴嘟嘟,还是狗吧狗狗', {flag: 'a'}, err => {
    // 判断
    if(err) {
        console.log('写入失败~~')
        return
    }
    console.log('写入成功~~')
})

三、文件流式写入

代码:

// 1、导入fs
const fs = require('fs')

// 2、创建写入流对象
const ws = fs.createWriteStream('./观书后感.txt')

// 3、write
ws.write('半亩方塘一鉴开\r\n')
ws.write('天光云影共徘徊\r\n')
ws.write('问渠那得清如许\r\n')
ws.write('为有源头活水来\r\n')

// 关闭通道
ws.close();

四、文件读取

方法 说明
readFile 异步读取
readFileSync 同步读取
createReadStream 流式读取

代码:

// 1. fs模块
const fs = require('fs')


// 2. 异步读取
fs.readFile('./观书后感.txt', (err, data) => {
    if(err) {
        console.log('读取失败~~')
        return
    }
    console.log('读取成功~~', data.toString())
})


// 3. 同步读取
let data = fs.readFileSync('./观书后感.txt');
console.log(data.toString())


// 4. 流式读取
const rs = fs.createReadStream('./data.txt')  // 创建读取流对象

rs.on('data', res => {  // 绑定data事件
    console.log(res)
})

rs.on('end', () => {
    console.log('读取完成')
})

 效果:

五、文件的复制

代码:

// 导入fs模块
const fs = require('fs')

// 方式一
// 1、读取文件
let data = fs.readFileSync('./data.txt')
// 2、写入文件
fs.writeFileSync('./data2.txt', data);


//方式二 流式操作(推荐使用)
// 1、创建读取流对象
const rs = fs.createReadStream('./data.txt')
// 2、创建写入流对象
const ws = fs.createWriteStream('./data3.txt')
// 3. 绑定data事件
rs.on('data', chunk => {
    ws.write(chunk)
})

六、文件移动、重命名

语法:

rename(oldPath, newPath, callback) 同步
renameSync(oldPath, newPath) 异步

参数:

oldPath 文件当前的路径
newPath 新文件的路径
callback 操作后的回调

代码:

const fs = require('fs')

// 修改名字
fs.rename('./data.txt', './new_data.txt', err => {
    if(err) {
        console.log('操作失败~~')
        return
    }
    console.log('操作成功')
})

// 移动
fs.rename('./data2.txt', './data/new_data.txt', err => {
    if(err) {
        console.log('操作失败~~')
        return
    }
    console.log('操作成功')
})

七、文件删除

语法:

unlink(path, callback) 异步
unlinkSync 同步
rm(path, callback) 14.4版本

参数:

path 文件路径
callback 操作后的回调

代码:

const fs = require('fs')

fs.unlink('data3.txt', err => {
    if(err) {
        console.log('删除失败')
        return
    }
    console.log('删除成功')
})

八、文件夹操作

1、创建

语法:

mkdir(path, options, callback) 异步
mkdirSync(path, options) 同步

参数:

path 文件路径
options 选项配置
callback 操作后的回调

代码:

const fs = require('fs')

// 1、创建单个文件夹 
fs.mkdir('./html', err => {
    if(err) {
        console.log('创建失败~~')
        return
    }
    console.log("创建成功~~")
})

// 2、创建递归文件夹
fs.mkdir('./a/b/c', {recursive: true}, err => {  // 需要添加{recursive: true} 参数
    if(err) {
        console.log('创建失败~~')
        return
    }
    console.log("创建成功~~")
})

2、读取

语法:

readdir(path, callback) 读取文件夹

参数:

path 读取的文件夹
callback 操作后的回调

代码:

const fs = require('fs')
fs.readdir('./data', (err, data) => {
    if(err) {
        console.log('读取失败')
        return
    }
    console.log(data);
})

3、删除

语法:

rmdir(path, option, callback) 不推荐使用
rm(path, option, callback) 推荐使用

参数:

path 路径
option 其他参数
callback 操作后回调

.0

代码:

const fs = require('fs')
// 删除
fs.rmdir('./html', err => {
    if(err) {
        console.log("删除失败")
        return
    }
    console.log("删除成功")
})

// 递归删除   删除a/b/c
fs.rmdir('./a', {recursive: true}, err => {
    if(err) {
        console.log("删除失败")
        return
    }
    console.log("删除成功")
})


// 推荐使用
fs.rm('./a', {recursive: true}, err => {
    if(err) {
        console.log("删除失败")
        return
    }
    console.log("删除成功")
})

猜你喜欢

转载自blog.csdn.net/qq_52421092/article/details/130090657