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);
}
来源: http://www.jianshu.com/p/9be5f1e5a9f8