Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:
var fs = require("fs")
对文件的操作
文件读取
Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。
同步
//同步 所有同步的函数都是函数后面加Sync;
var res = fs.writeFileSync("1.txt","我是写入内容");
异步
//文件的读取
fs.readFile("1.txt",function (err,data) {
if (err){
console.log(err)
}else {
console.log(data.toString())
}
})
文件写入
//创建: writeFile(文件名,写入内容,配置参数,回调函数) 异步
//配置参数:
/*
* a :追加
* w :写入
* r :读取
* */
fs.writeFile("2.txt","我是2.txt",{flag:"a"},function (err) {
if(err){
console.log(err);
}else {
console.log("写入成功");
}
})
// 追加写入
fs.appendFile("2.txt","我是追加的字符",function (err) {
if(err){
return console.log(err);
}else {
console.log("追加成功");
}
})
文件名修改
//文件修改(文件名的修改)
fs.rename("5.txt","1.txt",function (err) {
if(err){
console.log(err)
}else {
console.log("修改成功");
}
})
//文件删除
fs.unlink("2.txt",function (err) {
if(err){
return console.log(err)
}else {
console.log("删除成功")
}
})
由于fs模块中没有对文件的复制,我们可以自己通过以上操作封装一个
function mycopy(file1,file2) {
//读取文件
var res = fs.readFile(file1,function (err,data) {
if (err){
console.log(err)
}else {
var res = data.toString()
fs.writeFile(file2,res,function (err) {
if(err){
console.log(err)
}else {
console.log("写入成功");
}
})
}
})
}
//
function mycopy(src,dest) {
fs.writeFileSync(dest,fs.readFileSync(src));
}
对文件夹的操作
文件夹的操作/目录操作
// 目录创建:
// 1、1:执行-x 2、2:写-w 3、4:读-r
fs.mkdir("10",0666,function (err) {
if(err){
console.log(err)
}else {
console.log("创建成功");
}
})
修改文件夹权限
fs.chmod("11",0777,function (err) {
if(err){
console.log(err)
}else {
console.log("修改权限成功")
}
})
判断文件或者文件夹是否存在
fs.exists("10",function (exists) {
if(exists){
console.log("文件夹已存在");
}else {
fs.mkdir("10",0777,function (err) {
if(err){
return console.log(err);
}else{
console.log("创建成功");
}
})
}
})
删除文件夹 : 只能删除空文件夹
fs.rmdir("10",function (err) {
if(err){
return console.log(err)
}else {
console.log("删除成功");
}
})
读取文件夹
fs.readdir("10",function (err,data) {
if(err){
console.log(err);
}else {
console.log(data);
}
})
显示文件的详细信息:
//针对详细信息来判断是否是文件
fs.stat("10",function (err,data) {
if(err){
return console.log(err)
}else {
// console.log(data);
//判断是否是文件
var res = data.isFile();
//判断是否是文件夹
// data.isDirectory();
if(res){
console.log("是文件")
}else {
console.log("是文件夹")
}
}
})
由于node.js中没有删除包含文件的文件夹的函数,因此我们仿写一个函数来删除包含文件的文件的函数
// 删除文件夹的函数 同步
var removeDir = function(src) {
// 获取到文件夹里的内容
var arr = fs.readdirSync(src);
//判断是否是文件,如果是文件就删除;如果是文件夹再执行相同过程
for(var i=0;i<arr.length;i++){
//子文件的详细信息
// 组装文件或者文件夹的路径
var url = src+"/"+arr[i];
var data = fs.statSync(url);
//判断每个元素是文件或者是文件夹
if(data.isFile()){
//是文件
fs.unlinkSync(url);
}else {
//是文件夹
removeDir(url)
}
}
//删除空文件夹
fs.rmdirSync(src);
}