> 文章列表 > Nodejs中的fs模块

Nodejs中的fs模块

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写入失败: 错误对象   写入成功: nullif(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("删除成功")
})