一. 读取文件夹
同步读取文件
const fs = require('fs');
// 同步读取文件夹
let dirs = fs.readdirSync('./');
console.log(dirs)
执行结果和dir一样
注意:输出结果是一个数组
异步读取文件夹
const fs = require('fs');
let dirs = fs.readdir('./',(err,data)=>{
console.log(err);
console.log(data);
});
console.log(dirs)
异步读取文件夹
- 异步读取,回调函数后执行
- 在node中,错误的回调优先,回调函数第一个参数为错误对象,默认为null
所以,在回调函数中,一般先判断错误:
const fs = require('fs');
let dirs = fs.readdir('./dsfsdfs',(err,data)=>{
if(err){//表示有错误
console.log(err)
}else{
console.log(data);
}
});
console.log(dirs)
输出错误,因为./dsfsdfs目录不存在
若是同步读取文件夹,出现错误时,程序就崩了,下面的代码也不会执行:
const fs = require('fs');
// 同步读取文件
let dirs = fs.readdirSync('./dadfdfsgd');
console.log(123)
console.log(dirs)
./dadfdfsgd是一个并不存在的目录
出现错误,程序直接崩,并不打印123
解决方法:
const fs = require('fs');
// 同步读取文件
try{
// 放可能出错的代码
let dirs = fs.readdirSync('./dadfdfsgd');
}
catch(err){
console.log("出错啦");
console.log(err)
}
console.log(123)
用try catch捕获错误,然后处理
二. 创建文件夹
// 创建目录
const fs = require('fs');
fs.mkdir('./testDir',(err)=>{
console.log(err);
})
创建文件夹成功。
若文件夹本身存在,则会报错!
文件夹重命名
fs.rename(oldPath, newPath, callback)
const fs = require('fs');
fs.rename('./testDir','testDir01',(err)=>{
if(err){
console.log("更改失败");
}else{
console.log("更改成功");
}
})
删除空文件夹
fs.rmdir(path, callback)
const fs = require('fs');
fs.rmdir('./testDir01',(err)=>{
if(err){
console.log("删除失败");
}else{
console.log("删除成功");
}
})
三. 文件操作
- 读取文件 fs.readFile(path[, options], callback)
- 删除文件 fs.unlink(path, callback)
- 创建文件 fs.writeFile(file, data[, options], callback)
异步地写入数据到文件,如果文件已经存在,则替代文件。 data 可以是一个字符串或一个 buffer。如果 data 是一个 buffer,则忽略 encoding 选项。它默认为 'utf8'。 - 追加文件 fs.appendFile(file, data[, options], callback)
异步地追加数据到一个文件,如果文件不存在则创建文件。data
可以是一个字符串或Buffer
。
注意:为防止覆盖文件,一般用fs.appendFile
var fs = require('fs');
// 创建文件
// fs.writeFile('weather.txt','今天天气真好',(err)=>{
// console.log(err);
// })
// 追加文件
// fs.appendFile('weather.txt','今天天气真好',(err)=>{
// console.log(err);
// })
// 读取文件
// fs.readFile('./weather.txt','utf-8',(err,msg)=>{
// console.log(err);
// console.log(msg);
// })
// 删除文件
fs.unlink('./weather.txt',(err)=>{
console.log(err);
})
四. 判断是否是文件
fs.Stats 类
从 fs.stat()
、fs.lstat()
和 fs.fstat()
及其同步版本返回的对象都是该类型。
stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isCharacterDevice()
-
stats.isSymbolicLink()
(仅对fs.lstat()
有效) stats.isFIFO()
stats.isSocket()
var fs = require('fs');
fs.stat('./fileOpea.js',(err,stats)=>{
if(stats.isFile()){
console.log("This is a file");
}else{
console.log("This is a folder")
}
})
网友评论