3.6 fs模块——文件系统模块
用于文件的操作,目录的创建、删除、读取、;文件的创建、读取、写入、删除....
(1)查看文件状态
fs.stat(path,callback)
path: 要查看的文件的路径
callback:回调函数,用于获取文件状态 function(err,stats)
err: 如果查看失败的错误信息
stats:文件的状态信息
isDirectory() 是否为目录
isFile() 是否为文件。
fs.statSync(path); 查看文件状态,没有回调函数,直接添加路径查看(主程序执行完再执行)
//引入文件系统模块 const fs=require('fs'); //查看文件状态 //参数1:要查看的文件路径 ./可加可不加 //参数2:回调函数 用于获取文件结果 fs.stat('./module',function(err,stats){ //err:如果查看失败的错误消息 if(err) throw err; //throw:抛出错误,阻止往后执行 console.log(stats); //stats:文件的状态信息 console.log(stats.isDirectory());//是否为目录 console.log(stats.isFile()); //是否为文件 }); | //引入fs模块 const fs=require('fs'); //把查看的文件状态保存到变量中,使用方法的返回值获取结果 var stats=fs.statSync('module'); console.log(stats); |
同步和异步
同步:方法调用后,必须等待方法调用结束,才能继续后边的任务;通过返回值获取结果
异步:方法调用后无需等待结束,直接执行后续的代码,整个过程不会阻碍后边的任务;通过回调函数获取结果,最后执行,等主程序执行完后执行(排队在队列中)
(2)创建目录
fs.mkdir(path,callback) (异步) / fs.mkdirSync(path) (同步)
(3)删除目录
fs.rmdir(path,callback) (异步) / fs.rmdirSync(path) (同步)
//引入fs模块 const fs=require('fs'); //异步,创建目录mydir fs.mkdir('mydir1',function(err){ if(err) throw err; console.log('目录创建成功!'); }); fs.mkdirSync('mydir2'); //同步, | //引入fs模块 const fs=require('fs'); //异步,删除目录mydir fs.rmdir('mydir1',function(err){ if(err) throw err; console.log('目录删除成功'); }) fs.rmdirSync('mydir2'); //同步 |
(4)读取目录
fs.readdir(path,callback) (异步) / readdirSync(path) (同步)
callback:
err: 可能产生的错误
files:读取的结果,格式为数组
//引入fs模块 const fs=require('fs'); //读取目录中的内容,异步 fs.readdir('module',function(err,files){ if(err) throw err; console.log(files); }); var files=fs.readdirSync('module'); //同步 console.log(files); |
(5)清空写入,创建(写入)文件
fs.writeFile(path,data,callback) / fs.writeFileSync(path,data)
如果文件不存在会创建文件,如果文件已存在,会清空文件内容,然后写入
PS: path:要写入的文件路径 data:要写入的数据 callback:回调函数
(6)追加写入,创建(写入)文件
fs.appendFile(path,data,callback) / fs.appendFileSync(path,data)
如果文件存在,在文件末尾写入数据,如果文件不存在,会创建文件并写入文件
PS: path:要写入的文件路径 data:要写入的数据 callback:回调函数
//练习:创建数组,包含多个姓名,遍历数组获取每个元素,把每个元素使用同步方法写入到文件data.txt |
const fs=require('fs'); var arr=['tom ','jack ','rose ','anny ','sum ','tony ']; for(var i=0;i<arr.length;i++){ fs.appendFileSync('module/data.txt',arr[i],function(err){ if(err) throw err; }); } |
(7)读取文件
fs.readFile(path,callback) / fs.readFileSync(path)
callback:
err: 可能产生的错误信息
data:读取的文件中的数据,格式为Buffer
//读取文件 fs.readFile('module/data.txt',function(err,data){ if(err) throw err; console.log(data.toString()); }); fs.readFileSync(path); //同步 |
(8)删除文件
fs.unlink(path,callback) / fs/unlinkSync(path)
//删除文件 fs.unlink('module/1.txt',function(err){ if(err) throw err; }) |
(9)判断文件(目录)是否存在
fs.existsSync(path) 存在——> true;不存在——>false
//判断文件(目录)是否存在 var res=fs.existsSync('module/new.txt'); //var res=fs.existsSync('module'); console.log(res) |
//判断文件2.txt是否存在,如果存在删除, if(fs.existsSync('module/2.txt')){ fs.unlink('module/2.txt',function(err){ if(err) throw err; }); | //判断目录mydir是否存在,如果不存在创建 if(! fs.existsSync('mydir')){ fs.mkdir('mydir',function(err){ if(err) throw err; }) |
| 异步 | 同步 |
查看文件状态 | fs.stat(path,callback) | fs.statSync(path) |
创建目录 | fs.mkdir(path,callback) | fs.mkdirSync(path) |
删除目录 | fs.rmdir(path,callback) | fs.rmdirSync (path) |
读取目录 | fs.readdir(path,callback) | fs.readdirSync (path) |
清空写入 | fs.writeFile(path,data,callback) | fs.writeFileSync (path,data) |
追加写入 | fs.appendFile(path,data,callback) | fs.appendFileSync (path,data) |
读取文件 | fs.readFile(path,callback) | fs.readFileSync (path) |
删除文件 | fs.unlink(path,callback) | fs.unlinkSync (path) |
判断文件/目录是否存在 | fs.existsSync(path) |
|