声 明 |
本教程仅用于初学Node.js同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用Node.js版本为6.11.1。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。PAEA.CN版权所有。 |
上节我们了解了Node.js的Node.js里的事件event.这节我们一起来看看node.js里的文件系统.
fs模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接等 POSIX 文件系统操作。fs模块中所有的操作都提供了异步的和同步的两个版本。其中异步为默认,同步方法通过Sync字样来区别。
我们来简单的看看几个常用的操作用法。对应官网API:https://nodejs.org/dist/latest-v6.x/docs/api/fs.html
fs.open(path, flags[, mode], callback)
fs.open看名字就知道是打开方法.用法如上.对应官网API:https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_open_path_flags_mode_callback
//open.js
var fs = require('fs');
fs.open("1.txt","r",function(err, fd){
console.log(err);
});
我们先不放1.txt看看结果.
我们看到系统正常的报错了.
然后我们放一个1.txt文件看看.
好了,错误变成null了,说明运行成功了.
fs.readFile(file[, options], callback)
fs.readFile瞅着就知道是用来读取的.直接来用法:对应官网API:https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfile_file_options_callback
//readfile.js
var fs = require('fs');
fs.readFile("1.txt","utf-8",function(err, data){
if(err){
console.error(err);
}else{
console.log(data);
}
});
fs.stat(path, callback)
刚才我们都是要判断是否存在文件,每步都对文件做了判断,现在我们可以用fs.stat来判断这个文件是否存在.
//stat.js
var fs = require('fs');
fs.stat("1.txt", function(err, stat){
if(err){
console.error(err);
}else{
console.log(stat);
}
});
先删除1.txt文件运行一次.
然后把1.txt创建好,再运行一次
如图,我们能看到这个文件的整个状态信息.
TIP:虽然有fs.exists方法,不过Node.js官方并不建议使用,因为还不够稳定.
fs.mkdir(path[, mode], callback)
创建文件夹是我们经常用的操作了.
//dir.js
var fs = require('fs');
fs.mkdir("./1/2/","0777", function(err){
if(err){
console.error(err);
}
});
我们运行一下,结果是失败的.
因为,mkdir不支持循环递归方式.
修改下代码
var fs = require('fs');
fs.mkdir("./1/","0o777", function(err){
if(err){
console.error(err);
}
});
再运行,成功.
TIP:虽然node.js没有提供递归参数,但是我们可以自己通过stat方法和mkdir方法自己构造一个递归的创建方法.
fs.unlink(path, callback)
有创建,就有删除啦.
//unlink.js
var fs = require('fs');
fs.unlink("./1/", function(err){
if(err){
console.error(err);
}
});
TIP:这里要注意权限问题,如果要删除的文件没有权限,那么会直接报错.如下:
fs.writeFile(file, data[, options], callback)
使用该方法,可以创建内容文件
//write.js
var fs = require('fs');
fs.writeFile("./1.txt","hello world","utf-8","0o777",function(err){
if(err){
console.error(err);
}
});
TIP:如果这个文件已经存在,那么会用新内容直接覆盖.所以如果你要做容错处理的话,记得先判断文件是否存在.
本节代码下载:链接: https://pan.baidu.com/s/1c1wG6E 密码: s2uc