文章目录
fs回调函数参数,错误优先
1. 同步版本异步版本
每个方法都有对应的同步版本和异步版本,同步不需要加回调函数,异步需要加回调函数
同步版本 mkdirSync
异步版本 mkdir
3. 文件读取
const fs = require('fs');
// 只能读取体积小的文件
fs.readFile('./hello.txt', (err, data) => {
if (err) {
console.log(err)
} else {
// buffer 转字符串 toString()
console.log(data.toString())
}
})
5. 写入文件(写入并覆盖)
const fs = require('fs');
// 所有类型都会隐式转换为字符串
fs.writeFile('./hello.txt', 'hello node', (err) => {
if (err) {
console.log(err)
} else {
console.log('数据写入成功')
}
})
图片,音频,视频…复制
const fs = require('fs');
// 先读后写
fs.readFile('C:/Users/Administrator/Desktop/正方体/m3.jpg', (err, data) => {
if (err) {
console.log(err)
} else {
// console.log(data.toString())
fs.writeFile('./1.jpg', data, (err) => {
console.log('写入成功')
})
}
})
6. 创建文件夹
const fs = require('fs');
// 文件名,回调函数
fs.mkdir('css', (err, data)=> {
console.log('111')
})
7. 追加文件内容
const fs = require('fs');
fs.appendFile('./hello.txt', 'hello node', (err) => {
if (err) {
console.log(err)
} else {
console.log('数据写入成功')
}
})
8. 判断文件还是目录
var fs = require('fs');
// 判断index.js是文件还是目录
fs.stat('index.js', function(err, data) {
// 判断是否为文件(是返回true 否则false)
console.log(data.isFile())
// 判断是否为目录
console.log(data.isDirectory())
})
9. 读取目录
const fs = require('fs');
// 文件夹路径,回调函数
fs.readdir('./', (err, fileList)=> {
if(err){
console.log(err)
}else{
console.log(fileList)
}
})
[
'css',
'hello.txt',
'index.html',
'index.js',
'spider.jpg',
'url.js'
]
10. 重命名
var fs = require('fs');
// 重命名前文件名,重命名后文件,回调函数
fs.rename('./hello.txt', './node.txt', function(err, data) {
console.log(111);
})
11. 删除文件
const fs = require('fs');
fs.unlink('./node.txt', (err)=>{
console.log('1111')
})
11. 删除文件夹
const fs = require('fs');
fs.rmdir('./node', (err)=>{
console.log('1111')
})
12. 读取文档流
var fs = require('fs');
// 流的方法读取文件
var readStream = fs.createReadStream('input.txt')
var str = '';
// 读取数据流
readStream.on('data', function(chunk) {
str += chunk
})
// 读取数据完成
readStream.on('end', function(chunk) {
console.log(str);
})
// 读取数据 失败
readStream.on('error', function(err) {
console.log(err);
})
13. 写入文档流
var fs = require('fs');
var data = '数据\n'
var writeStream = fs.createWriteStream('output.txt')
// 循环写入100次
for (var i = 0; i < 100; i++) {
writeStream.write(data, 'utf-8')
}
// 写入最后终止
writeStream.end();
// 结束写入
writeStream.on('finish', function() {
console.log('success')
})
writeStream.on('error', function(error) {
console.log('error')
})
14. 管道流(内容从一个文件转移到另一个文件)
var fs = require('fs');
// 读取文件流
var readStream = fs.createReadStream('input.txt')
// 写入文件流
var writeStream = fs.createWriteStream('output.txt')
// 读取到写入
readStream.pipe(writeStream)
console.log('success')
15. 例子
创建文件文件夹
const fs = require('fs');
let fileList = [{
name: 'css',
type: 'dir'
},
{
name: 'js',
type: 'dir'
},
{
name: 'images',
type: 'dir'
},
{
name: 'index.html',
type: 'file'
}
]
if (!fs.existsSync) {
fileList.forEach((item) => {
if (item.type === 'dir') {
fs.mkdirSync(item.name)
} else {
fs.writeFileSync(item.name, '')
}
})
} else {
console.log('文件存在')
}