文件系统模块FileSystem
在使用文件系统模块的前提就是必须require('fs')
- 第一步调用核心模块require('fs');
- 同步Sync和异步的区别 同步没有回调函数按部就班的走。异步则是可以直接执行后面
- 文件路径前面必须要加./因为跨平台了。不加(./)WINDOWS认得出但是Linux认不出
- 文件路径要么写绝对路径,要是相对路径必须node到这个文件的文件夹下面这样执行才可以
- 关于第四条备注
cd d:/text
node text.js
这样才能运行
关于FileSystem的几个参数
var fs = require('fs');
(1)fs.readFile(path,callback)
//异步读取一个文件的全部内容
(1.1)fs.readFileSync(path,callback) //同步读取一个文件的全部内容路径最好用__filename或者__dirname写绝对路径
var fs = require('fs');
fs.readFile('./text/2.txt',function(err,data){
//读取失败的时候
//if(err){throw err} //读取失败就抛出异常
console.log(data);
console.log(data.toString());
})
>结果<31 32 33 34 35>12345
(2)fs.writeFile(path,data,callback)同步就是fs.writeSync(path,data) 最好用__filename或者__dirname写绝对路径
- 异步的将数据写入一个文件,如果文件不存在则创建
- 如果文件存在则全部替换,data可以是string也可以是原生的buffer
var fs = require('fs');
fs.writeFile('./text/2.txt','测试数据',function(err,data){
console.log(err+"||"+data);
})
(3)fs.appendFile(path,data,callback)同步就是fs.appendFileSync(path,data)最好用__filename或者__dirname写绝对路径
- 异步的将数据添加到一个文件的尾部,
- 如果文件不存在,则会创建一个新的文件,data可以是string也可以是buffer
var fs = require('fs');
fs.appendFile('./text/2.txt','今天怎么样',function(err){
console.log(err)
})
(4)fs.exists(path,callback)同步就是fs.existsSync(path)
- 检查指定路径的文件或者文件是否存在一定注意他没有返回值
var fs = require('fs');
fs.exists('./text/2.txt',function(data){
if(data){
console.log("文件已经存在了")
}else
{
console.log("文件不存在");
}
})
(5)fs.rename(oldPath,newPath,callback)同步就是fs.renameSync(oldPath,newPath)
- 改变地址的方法
fs.rename('./text/2.txt','2.txt',function(err){
console.log(err);
})
(6) fs.stat(path,callback) 读取文件的信息同步就是fs.statSync(path,callback)
- 查看文件的状态
var fs = require('fs');
fs.stat('2.txt',function(err,data){
console.log(data);
})
(7) fs.unlink(path,callback)同步版本就是fs.unlinkSync(path)
- 删除文件
FileSystem操作文件夹
- fs.mkdir(path,callback)同步版本fs.mkdirSync(path)
- fs.readdir(path,callback)同步版本fs.readdirSync(path)
- fs.rmdir(path,callback)同步版本 fs.rmdirSync(path)
- fs.readdir(path,callback)同步版本fs.readdirSync(path)
var fs = require('fs');
fs.mkdir('./text1',function(err){
console.log(err);
}) //创建目录
fs.rmdir('./text1',function(err){
console.log(err);
}) //移除目录
关于读取的一个小DEMO
var fs = require('fs');
fs.readdir('./',function(err,data){
for(var i=0;i<data.length;i++)
{
var f = data[i]; //这里必须转换一下。否则下面输出不了data[i];
fs.stat(f,function(err,data2){
switch(data2.mode)
{
case 16822:
console.log("[文件夹]:"+f);
break;
case 33206:
console.log("文件:"+f);
break;
default:
console.log("其他类型:"+f);
break;
}
});
}
})
前端自动化的小DEMO,也就是运行脚本后自动创建text1下面的images js css还有index.html
var fs = require('fs');
var project = {"name":"text2",
"fileData":[
{
"name":"images",
"type":"dir"
},
{
"name":"js",
"type":"dir"
},
{
"name":"css",
"type":"dir"
},
{
"name":"index.html",
"type":"file",
"content":"<html><body>今天完成了</body></html>"
}
]
};
if(project.name)
{
fs.mkdir(project.name,function(err,data){
for(var i=0;i<project.fileData.length;i++)
{
if(project.fileData[i].type=="dir")
{
fs.mkdir(project.name+"/"+project.fileData[i].name,function(err,data){
console.log(err);
})
}else if(project.fileData[i].type=="file"){
fs.writeFile(project.name+"/"+project.fileData[i].name,project.fileData[i].content,function(err,data){
console.log(err);
})
}
}
})
}