一、简介
fs模块就是Nodejs中的文件系统模块(file system)
用于进行和文件相关的操作
二、语法
1、fs.stat
作用:检测是文件还是目录
语法:fs.stat("文件路径",回调函数)
var fs=require("fs");
fs.stat("FsTest\\dir",function(error,stats)
{
if (error)
{
console.log(error);
return false;
}
else
{
console.log("文件:"+stats.isFile());
console.log("目录:"+stats.isDirectory());
}
})
目录:
输出:
2、fs.mkdir
作用:创建目录
语法:mkdir(目录路径,目录权限 默认0777(可省略),回调函数)
若同名文件(文件夹)已存在 则会报错
var fs=require("fs");
fs.mkdir("FsTest\\css",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("创建目录成功");
}
})
3、fs.writeFile
作用:写入内容
语法:writeFile(文件名,要写入的数据,字符集(可省略),回调函数)
若要写入的文件不存在 则会先创建后再写入
若已存在 则会覆盖原有内容
var fs=require("fs");
fs.writeFile("FsTest\\t.txt","你好",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("写入成功");
}
})
4、fs.appendFile
作用:追加内容
语法:appendFile(文件名,要追加的数据,字符集(可省略),回调函数)
若要写入的文件不存在 则会先创建后再写入
若已存在 则会追加到原有内容后面
var fs=require("fs");
fs.appendFile("FsTest\\tt.txt","你好222","utf8",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("追加成功");
}
})
5、fs.readFile
作用:读取文件
语法:readFile(文件名,字符集(可省略),回调函数)
var fs=require("fs");
fs.readFile("FsTest\\tt.txt","utf8",function(err,data)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log(data);
}
})
6、fs.readdir
作用:读取目录
语法:readdir(目录名,回调函数)
将目录下的文件和文件夹全都获取到
var fs=require("fs");
fs.readdir("FsTest\\dir",function(err,data)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log(data);
}
})
目录:
输出:
7、fs.rename
作用1:修改文件名
语法:rename(旧名称,新名称,回调函数)
用途:比如 浏览器点击的时候 可以直接改变目录名称
var fs=require("fs");
// rename(旧名称,新名称,回调函数)
fs.rename("FsTest\\dir\\index.html","FsTest\\dir\\aaa.html",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("改名成功");
}
})
作用2:剪切文件
语法:rename(旧目录,新目录,回调函数)
fs.rename("FsTest\\dir\\aaa.html","FsTest\\dir\\css\\zzz.html",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("剪切成功");
}
})
8、fs.rmdir
作用:删除目录
语法:rmdir(目录名,回调函数)
该方法只能删除目录 并不能删除文件 若要删除文件需用专门删除文件的方法unlink
var fs=require("fs");
fs.rmdir("FsTest\\dir\\js",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("删除目录成功");
}
})
9、fs.rmlink
作用:删除文件
语法:unlink(文件名,回调函数)
var fs=require("fs");
fs.unlink("FsTest\\dir\\zzz.html",function(err)
{
if (err)
{
console.log(err);
return false;
}
else
{
console.log("删除文件成功");
}
})
10、fs.createReadStream
作用:从文件流中读取数据
语法:createReadStream(要读取的文件路径)
用on()方法来接收广播 语法:on(广播类型,回调函数)
var fs=require("fs");
// 以流的方式读取文件
var readStream=fs.createReadStream("FsTest\\t.txt");
// 每读到一块会进行广播 用on()方法来接收广播
var str=""; // 保存数据
var count=0; // 读取次数
readStream.on("data",function(chunk)
{
str+=chunk;
count++;
})
// 读取完成
readStream.on("end",function(chunk)
{
// 打印读取的内容
console.log(str);
// 打印读取的次数
console.log("共打印了:"+count+"次");
})
// 读取失败
readStream.on("error",function(err)
{
// 打印失败信息
console.log(err);
})
11、fs.createWriterStream
作用:写入文件
语法:createWriteStream(要写入的文件路径)
var fs=require("fs");
var writeStream=fs.createWriteStream("FsTest\\t.txt");
var data="我是要写入的数据\n";
// write(要写入的数据,字符编码格式)
for (var i=0;i<100;i++)
{
writeStream.write(data,"utf8");
}
// 标记写入完成 当标记了写入完成之后 即无法继续写入了
writeStream.end();
// 当标记了写入完成 即会广播finish事件
writeStream.on("finish",function()
{
console.log("写入完成");
})
// 写入失败
writeStream.on("error",function()
{
console.log("写入失败");
})
管道流
管道提供了一个输出流到输入流的机制
通常用于从一个流中获取数据并将数据传递到另外一个流中
语法:原文件的读取流.pipe(目标文件的写入流)
var fs=require("fs");
// 创建一个可读流
var readerStream = fs.createReadStream('FsTest\\t.txt');
// 创建一个可写流
var writerStream = fs.createWriteStream('FsTest\\tt.txt');
// 管道读写操作
// 读取文件内容 并将内容写入到目标文件中 当目标文件不存在 会自动创建
readerStream.pipe(writerStream);
console.log("程序执行完毕");