乐鱼app成为大巴黎赞助商

学习党的二十大,提升课堂教学技能,办人民满意的教育             心怀感恩 砥砺前行 奋进超越 决胜高考——乐鱼app成为大巴黎赞助商2023届决战高考200天誓师大会             一飞冲天,放飞科技梦——乐鱼app成为大巴黎赞助商举行第三届水火箭比赛             筑梦新华章,青春正飞扬——乐鱼app成为大巴黎赞助商举行第43届校运会田径运动会开幕式             河池市乐鱼app成为大巴黎赞助商党史学习活动             河池市乐鱼app成为大巴黎赞助商党总支部植树活动             河池市乐鱼app成为大巴黎赞助商党总支部“抗击疫情 党员先行”活动             聚焦校园 捕捉热点 ——乐鱼app成为大巴黎赞助商举行校园新闻稿件写作交流会             乐鱼app成为大巴黎赞助商举行“同心喜迎二十大 传承中华优秀传统文化” 中国古代文化常识竞赛             清廉少年心向党            

DoraCMS

您现在的位置是:首页>文档内容页

文档详情

乐鱼app成为大巴黎赞助商:Node.js API实例讲解——FS 文件夹操作

doramart 2023-02-05 12:17:48 技术文档230483
FS 文件夹操作。创建文件夹,在当前目录下,创建一个mydir的文件夹

乐鱼app成为大巴黎赞助商:FS 文件夹操作

创建文件夹

在当前目录下,创建一个mydir的文件夹

异步实现代码:

var fs = require("fs");
fs.mkdir("mydir",function(err){
    console.log(err)
})

同步实现代码:

var fs = require("fs");
fs.mkdirSync("mydir");

很简单,不做过多解释。

删除文件夹

异步实现代码:

var fs = require("fs");
fs.rmdir("mydir",function(err){
    console.log(err);
})

同步实现代码:

fs.rmdirSync("mydir");
文件夹重命名

把当前目录下mydir文件夹改为mydir2名,如果没有mydir文件夹,那么会抛出异常err。

同步实现代码

var fs = require("fs");

fs.rename("mydir","mydir2",function(err){
    console.log(err);
})

异步实现代码:

var fs = require("fs");  
fs.renameSync("mydir","mydir2")
查看文件夹内有哪些文件和文件夹。

查看当前目录下有哪些文件,异步实现代码:

var fs = require("fs");

fs.readdir(".",function(err,files){
    console.log(files)
})

回调函数中,err表示异常信息,比如文件夹不存在,files并不是文件本身,而是一个数组,数组里储存当前目录下有哪些文件夹和文件的字符串名称。

同步实现代码:

var fs = require("fs");

var files = fs.readdirSync(".");
console.log(files);
查看文件夹、文件属性状态

查看当前文件夹状态属性

异步实现代码1 :

var fs = require("fs");

fs.stat(".",function(err,stats){
    console.log("stats.isFile() ->" + stats.isFile())
    console.log("stats.isDirectory() -> " + stats.isDirectory())
    console.log("stats.isBlockDevice() ->" + stats.isBlockDevice())
    console.log("stats.isCharacterDevice()" + stats.isCharacterDevice())
    console.log("stats.isSymbolicLink() -> "+stats.isSymbolicLink())
    console.log("stats.isFIFO() ->" + stats.isFIFO())
    console.log("stats.isSocket()-> " + stats.isSocket())
})

回调函数的stats是一个fs.Stats对象,这个对象常用的方法是stats.isDirectory()和stats.isFile(),可以判断是文件还是文件夹。

异步实现代码2 :

var fs = require("fs");

fs.lstat(".",function(err,stats){
    console.log("stats.isFile() ->" + stats.isFile())
    console.log("stats.isDirectory() -> " + stats.isDirectory())
    console.log("stats.isBlockDevice() ->" + stats.isBlockDevice())
    console.log("stats.isCharacterDevice()" + stats.isCharacterDevice())
    console.log("stats.isSymbolicLink() -> "+stats.isSymbolicLink())
    console.log("stats.isFIFO() ->" + stats.isFIFO())
    console.log("stats.isSocket()-> " + stats.isSocket())
})

这段代码和第一个实现代码一样,所不同的是使用了 fs.lstat方法,这个方法和stat方法的差别是,如果第一个参数是文件链接(linux用户比较熟悉),那么stats.isSymbolicLink()会为真,而stats.isFile()和stats.isDirectory()为假。文件链接在node.js中可以通过fs.link方法来创建(可参看下一节“文件操作”)。

异步实现代码3 :

var fs = require("fs");
var fd = fs.openSync(".","r");    
fs.fstat(fd,function(err,stats){
    console.log("stats.isFile() ->" + stats.isFile())
    console.log("stats.isDirectory() -> " + stats.isDirectory())
    console.log("stats.isBlockDevice() ->" + stats.isBlockDevice())
    console.log("stats.isCharacterDevice()" + stats.isCharacterDevice())
    console.log("stats.isSymbolicLink() -> "+stats.isSymbolicLink())
    console.log("stats.isFIFO() ->" + stats.isFIFO())
    console.log("stats.isSocket()-> " + stats.isSocket())
})

这个实现方式,效果和前两种一样,不同点就是使用了fs.fstat方法,这个方法的第一个参数不是文件路径,而是文件描述符fd,通过fs.openSync同步方法得到了当前目录的fd文件描述符。

fs.openSync和异步fs.open方法将在下一节“文件操作”中详细介绍。

对应以上三种方法的同步实现代码:

var fs = require("fs");
var stats = fs.statSync(".")
console.log("stats.isFile() ->" + stats.isFile())
console.log("stats.isDirectory() -> " + stats.isDirectory())
console.log("stats.isBlockDevice() ->" + stats.isBlockDevice())
console.log("stats.isCharacterDevice()" + stats.isCharacterDevice())
console.log("stats.isSymbolicLink() -> "+stats.isSymbolicLink())
console.log("stats.isFIFO() ->" + stats.isFIFO())
console.log("stats.isSocket()-> " + stats.isSocket())
var fs = require("fs");
var stats = fs.lstatSync(".")
console.log("stats.isFile() ->" + stats.isFile())
console.log("stats.isDirectory() -> " + stats.isDirectory())
console.log("stats.isBlockDevice() ->" + stats.isBlockDevice())
console.log("stats.isCharacterDevice()" + stats.isCharacterDevice())
console.log("stats.isSymbolicLink() -> "+stats.isSymbolicLink())
console.log("stats.isFIFO() ->" + stats.isFIFO())
console.log("stats.isSocket()-> " + stats.isSocket())
var fs = require("fs");
var fd = fs.openSync(".","r");    
var stats = fs.fstatSync(fd)
console.log("stats.isFile() ->" + stats.isFile())
console.log("stats.isDirectory() -> " + stats.isDirectory())
console.log("stats.isBlockDevice() ->" + stats.isBlockDevice())
console.log("stats.isCharacterDevice()" + stats.isCharacterDevice())
console.log("stats.isSymbolicLink() -> "+stats.isSymbolicLink())
console.log("stats.isFIFO() ->" + stats.isFIFO())
console.log("stats.isSocket()-> " + stats.isSocket())
监听文件夹

这个功能很有趣,就是当文件夹内有变化时,会触发事件,比如文件夹内,增加文件、修改文件都会触发事件。

监听当前目录的代码实现

var fs = require("fs");
fs.watch(".",function(eventname,filename){
    console.log(eventname);
    console.log(filename);
});

通过fs.watch方法可以监听一个文件或文件夹,这里监听了当前文件夹。这里有几种情况,当创建一个文件夹或文件时,eventname是rename,filename是新创建的文件夹或文件的名称。当删除一个文件夹或文件时,eventname是rename,filename是null。当更改一个文件内容或文件(文件夹)名时,eventname是change,filename是被更改的那个文件的文件名。

还有一种监听方式。

var fs = require("fs");

var watch = fs.watch(".");

watch.on("change",function(eventname,filename){
    console.log(eventname);
    console.log(filename);
})

fs.watch会返回一个fs.FSWatcher对象,通过watch监听来达到同样目的,watch.close() 可以关闭监听,watch.on("error",callback)可以监听错误。

文章评论

取消回复
登录 参与评论

评论列表(

乐鱼app成为大巴黎赞助商