node是一门服务器语言,其目的就是操纵服务器(电脑主机)
文件同步写入
使用fs模块前,需要引入cost fs = require(‘fs’);
let fs = require('fs')
//同步打开文件
let fd = fs.openSync('text.html','w') //文件名称,w代表写入
console.log(fd);
//写入内容
let str = "王棽,你好!"
fs.writeFileSync(fd,str);
//退出文件
fs.closeSync(fd)
文件异步写入
let fs = require('fs')
fs.open('text2.txt','w',(err,fd)=>{
//打开文件后执行函数
console.log("文件打开")
fs.writeFile(fd,'123456778',function(err){
//回调函数
if(!err){
console.log("写入完成!");
fs.close(fd,()=>{
//关闭后回调函数
console.log("文件关闭完成")
})
}else{
console.log(err)
}
})
})
同步:点汉堡 》制作汉堡 》 制作好拿走 》继续点汉堡
异步:点汉堡 》 旁边等候 》 下一位继续点汉堡 》 汉堡做好叫你领取
文件流写入:像水龙头,想要水就拧开,不需要了就关闭。随时拧开,随时关闭。随时控制文件的写入写出。
let fs = require("fs");
//创建写入流
let ws = fs.createWriteStream('text3.txt');
//监听通道打开
ws.once('open',()=>{
console.log("通道打开");
ws.write('你吃饭了吗1')
ws.write('你吃饭了吗2')
ws.write('你吃饭了吗3')
// 写入结束
ws.end()
})
//监听通道关闭
ws.once('close',()=>{
console.log('通道关闭');
})
读取写入图片文件
let fs = require('fs')
fs.readFile('向下.png',(err,data)=>{
//回调函数两个参数,错误和数据
if(!err){
console.log(data)
fs.writeFile('向上.png',data,(err)=>{
if(!err){
console.log('读取写入成功');
}else{
console.log('err',err)
}
})
}else{
console.log('err',err)
}
})
console.log('读取数据')
通过管道实现读取写入流
let fs = require('fs')
let rs = fs.createReadStream('向下.png');
let ws = fs.createReadStream('向中.png');
//创建管道,将读取流通过管道流出
rs.pipe(ws)
删除文件:
let fs = require("fs");
fs.unlink('text1.html',(err)=>{
if(err){
console.log(err)
}else{
console.log('删除文件成功')
}
})
读取目录下所有文件
let fs = require("fs");
fs.readdir('./',(err,files)=>{
if(err){
console.log(err)
}else{
console.log(files)
}
})
创建文件夹
let fs = require("fs");
fs.mkdir('./img',(err)=>{
if(err){
console.log(err)
}else{
console.log('创建成功')
}
})
创建文件夹
let fs = require("fs");
fs.mkdir('./img',(err)=>{
if(err){
console.log(err)
}else{
console.log('创建成功')
}
})
删除文件夹
let fs = require("fs");
fs.rmdir('./img',(err)=>{
//只能删除空目录
if(err){
console.log(err)
}else{
console.log('文件夹删除成功')
}
})
let fs = require("fs");
function delDir(dirPath){
//封装函数,可删除空或非空目录
var filesArr = fs.readdirSync(dirPath); //定义一个数组拿到文件路径
for(var i in filesArr){
//循环删除
var filePath = dirPath + '/' + filesArr[i]; //拼接路径
//读取文件信息
var stat = fs.statSync(filePath);
//判断是文件还是目录
if(stat.isFile()){
fs.unlink(filePath)
}else if(stat.isDirectory){
//递归调用此函数
delDir(filePath)
}
}
//删除空目录
fs.rmdirSync(dirPath)
}
delDir('./img')