您的位置:首页 >> LNMPA >> 和屌丝一起学Node.js—文件系统
和屌丝一起学Node.js—文件系统
[ 孤狼 | 2017-08-14 17:09:06 | LNMPA ]
声  明

本教程仅用于初学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.jpg

我们看到系统正常的报错了.

然后我们放一个1.txt文件看看.

2.jpg

好了,错误变成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);
}
});

3.jpg


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文件运行一次.

4.jpg

然后把1.txt创建好,再运行一次

5.jpg

如图,我们能看到这个文件的整个状态信息.


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);
}
});

我们运行一下,结果是失败的.

6.jpg

因为,mkdir不支持循环递归方式.

修改下代码

var fs = require('fs');
fs.mkdir("./1/","0o777", function(err){
if(err){
console.error(err);
}
});

再运行,成功.

7.jpg

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:这里要注意权限问题,如果要删除的文件没有权限,那么会直接报错.如下:

8.jpg


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




转载请注明出处:http://gl.paea.cn/lnmpa/content/2017/08/14/112.html