var fs = require("fs");//fs 系统文件模块,对文件进行操作.Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
1.文件读取
var fs = require("fs"); fs.readFile('./a.txt',function(err,data){ if(err){ return console.error(err); } console.log("异步"); console.log(data.toString()); }) var dataSyn = fs.readFileSync('./a.txt'); console.log("同步") console.log(dataSyn.toString())
运行结果:
同步
a.txt文件
异步
a.txt文件
2.文件信息
语法
以下为通过异步模式获取文件信息的语法格式:
fs.stat(path, callback)
参数
参数使用说明如下:
path - 文件路径。
callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。
fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的
实例:
var fs = require("fs"); fs.stat('./a.txt',function(err,data){ if(err){ return console.error(err); } console.log("异步"); console.log(data); }) var dataSyn = fs.statSync('./a.txt'); console.log("同步") console.log(dataSyn)
运行结果中stat信息:
ino: 3940649673949397,
size: 11, ---文件大小,kb
blocks: undefined,
atime: 2017-07-08T02:25:14.894Z,
mtime: 2017-07-08T02:27:23.823Z,
ctime: 2017-07-08T02:27:23.823Z,
birthtime: 2017-07-08T02:25:14.894Z ---文件产生时间
常用到的方法:
dataSycn.birthtime
dataSycn.size
3.写文件
语法
以下为异步模式下写入文件的语法格式:
fs.writeFile(filename, data[, options], callback)
如果文件存在,该方法写入的内容会覆盖旧的文件内容。
参数
参数使用说明如下:
path - 文件路径。
data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。
options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'
callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。
实例:
// fs.writeFile(filename,data,[options],callback); var w_data = '这是一段通过fs.writeFile函数写入的内容; '; var w_data = new Buffer(w_data); /** * filename, 必选参数,文件名 * data, 写入的数据,可以字符或一个Buffer对象 * [options],flag,mode(权限),encoding * callback 读取文件后的回调函数,参数默认第一个err,第二个data 数据 */ fs.writeFile(__dirname + '/test.txt', w_data, {flag: 'a'}, function (err) { if(err) { console.error(err); } else { console.log('写入成功'); } });
追加方式写文件
// fs.appendFile(filename,data,[options],callback); fs.appendFile(__dirname + '/test.txt', '使用fs.appendFile追加文件内容', function () { console.log('追加内容完成'); });
4.删除文件
语法
以下为删除文件的语法格式:
fs.unlink(path, callback)
参数
参数使用说明如下:
path - 文件路径。
callback - 回调函数,没有参数。
实例
var fs = require("fs"); console.log("准备删除文件!"); fs.unlink('./my.txt', function(err) { if (err) { return ; } console.log("文件删除成功!"); });
5.删除文件夹
//获取当前目录下面所有的文件及文件夹 fs.readdir(".",function(err,files){ console.log(files); });
删除空文件
语法
以下为删除文件的语法格式:
fs.rmdir(path, callback)
参数
参数使用说明如下:
path - 文件夹路径。
callback - 回调函数,没有参数。
var fs = require(“fs”); fs.rmdir('./aaa', function(err) { if (err) { return ; } console.log("文件夹删除成功!"); });
删除有内容的文件
/删除一个非空的文件夹(递归) function delDir(dirPath){ //删除目录,必须先删除目录中所有内容(文件和文件夹)。 //获取目录下面的所有内容。 var files = fs.readdirSync(dirPath); //遍历文件列表 for (var i=0;i<files.length;i++){ //文件名 var file = files[i]; //拼接路径(目录路径+文件名) var path = dirPath+"/"+file; //获取path对应文件信息对象 var stat = fs.statSync(path); //通过文件信息对象判断是否是有一个文件 if(stat.isFile()){//文件 fs.unlinkSync(path); }else{//文件夹 delDir(path); } } //删除文件夹 fs.rmdirSync(dirPath); } delDir("./a");
6.创建目录
//使用fs.mkdir创建目录 //fs.mkdir(path, [mode], callback); /** * path, 被创建目录的完整路径及目录名; * [mode], 目录权限,默认0777 * [callback(err)], 创建完目录回调函数,err错误对象 */ fs.mkdir(__dirname + '/fsDir', function (err) { if(err) throw err; console.log('创建目录成功') });