node 之 fs详解

193 阅读2分钟

这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战 传送门

文件操作模块

引入模块

let fs = require('fs');

读取文件

readFile 异步读取,无需等待

fs.readFile('./text.txt',(err,date)=>{
});

readFileSync 同步操作,进行阻塞

let date = fs.readFileSync('./text.txt');

文件写入

writeFile 异步写入

//异步版本的写入
fs.writeFile('./1.text','我是写入的内容',(err,data)=>{
})

writeFileSync 同步写入

fs.writeFileSync('./2.text','我是同步写入的文件')

文件删除

unlink 异步删除

fs.unlink('./1.text',(err,data)=>{
})

unlinkSync 同步删除

fs.unlinkSync('./2.text');

创建文件夹

mkdir 异步创建文件夹

//异步操作创建public文件夹
fs.mkdir('./public',(err,data)=>{
})

mkdirSync 同步创建文件夹

//同步操作创建css文件夹
fs.mkdirSync('./css');

删除文件夹

//异步操作删除public文件夹
fs.rmdir('./public',(err,data)=>{

//同步操作删除css文件夹
fs.rmdirSync('./css');

获得文件具体信息(判断是不是文件夹或者文件)

//异步获取文件的具体信息
fs.stat('./1.text',(err,info)=>{
	if (err) {
	} else{
            // info.isFile() 判断是不是一个文件 返回结果为true
            // info.isDirectory() 判断是不是一个文件 返回结果为true
	}
})

//同步
let file = fs.statSync('./1.text');
if(file.isFile()){
	console.log('这是一个文件');
}else if(file.isDirectory()){
	console.log('只是一个文件夹');
}else{
	console.log('抱歉这不是一个文件或者文件夹');
}

读取文件夹里面的所有文件

//异步读取文件夹里面的所有文件
fs.readdir('./public',(err,files)=>{
    files.forEach((x)=>{
     console.log('有'+ x +'这个文件');
    })
})
// 同步读取文件
let files = fs.readdirSync('./public');

移动并可以重命名文件(剪切)

//第二个参数如果是目录里面的文件的话他就会把文件移动
//如果单独只是文件名的话他就会把文件重命名
fs.rename('./1.text','./public/index.html',(err,data)=>{
})

// 同步操作移动并重命名文件
fs.renameSync('./public/index.html','./index.html');

复制并重命名文件(复制)

//异步复制并重命名文件
fs.copyFile('./1.text','./public/index.html',(err)=>{
})

// 同步操作复制并重命名文件
fs.copyFileSync('./index.html','./public/index.html');

模块 pipe方法大文件复制

var fs = require('fs');
//创建读取流
var readStream = fs.createReadStream('./1.zip');
//创建写入流
var writeStream = fs.createWriteStream('./2.zip');
//进行大文件的复制
readStream.pipe(writeStream);