当前位置: 首页 > 后端技术 > Node.js

Node.js学习之路06-fs文件系统的目录操作和文件信息

时间:2023-04-03 16:30:11 Node.js

6.目录操作6.1创建目录如果目录存在,则创建失败同步创建目录fs.mkdirSync(path,[mode])constfs=require('fs');letmkdir='./mkdir';fs。mkdir(mkdir,(err)=>{if(err){console.log(`mkdir${mkdir}filefailed~`);}else{console.log(`mkdir${mkdir}filesuccess~`);}});6.2读取目录如果读取的目录下有子目录或子文件,则保存子目录或子文件文件名作为文件数组元素同步读取目录fs.readdirSync()constfs=require('fs');letmkdir='./mkdir';fs.mkdir(mkdir,(err)=>{if(err){console.log(`mkdir${mkdir}filefailed~`);returnfalse;}console.log(`mkdir${mkdir}文件成功~`);letfileName=['ONE','TWO','THREE'];fileName.forEach((elem)=>{fs.mkdir(`${mkdir}/${elem}`,(err)=>{if(err){console.log(`${mkdir}/${elem}failed~`);returnfalse;}});fs.readdir(mkdir,(err,files)=>{if(err){console.log(`readdir${mkdir}文件失败~`);返回假;}console.log(`readdir${mkdir}文件成功~`);console.log(`${files}`);});});});7、查看和修改文件或目录信息在fs模块中,可以使用stat方法或lstat方法查看文件或目录。唯一不同的是,查看符号链接文件的信息时,必须使用lstat方法。fs.stat(path,callback(err,stats))fs.lstat(path,callback(err,stats))7.1查看文件信息同步方式查看文件信息fs.statSync(path);constfs=require('fs');letmkdir='./mkdir';fs.stat(mkdir,(err,stats)=>{if(err){console.log(`fs.stats${mkdir}filefailed~`);}else{console.log(`fs.stats${mkdir}文件成功~`);console.log(stats);}});StatsDetailedStats{dev:2050,文件或目录所在的设备ID,仅在UNIX模式下有效:16877,以数值形式表示的文件或目录的权限标志nlink:3,硬链接数文件或目录uid:0,文件或目录所有者的用户ID,仅在UNIX中有效gid:0,文件或目录所有者的用户组ID,仅在UNIX中有效rdev:0,字符设备文件或块设备文件所在设备的ID,仅在UNIX有效blksize:4096,ino:4197533,文件或目录的索引号,仅在UNIX有效size:4096,文件尺寸,即文件中中的数数块:8,atimems:1511846425357.986,mtimems:1511846425256.986,ctimems,ctimems:1511846425256.986:25.257Z,文件修改时间ctime:2017-11-28T05:20:25.257Z,文件创建时间birthtime:2017-11-28T05:20:25.257Z}7.2fstat方法使用open方法查询文件信息方法或openSync方法打开一个文件并返回一个文件描述符,可以使用fs模块中的fstat方法查询打开的文件信息constfs=require('fs');letmkdir='./mkdir';fs.open(mkdir,'r',(err,fd)=>{if(err){console.log(`open${mkdir}filefailed~`);returnfalse;}fs.fstat(fd,(err,stats)=>{if(err){console.log(`fstat${mkdir}filefailed~`);returnfalse;}console.log(JSON.stringify(stats));})})fs.fstatresult{“dev”:1041887651,“mode”:16822,“nlink”:1,“uid”:0,“gid”:0,“rdev”:0,“ino”:4222124650663107,“size”:0,“atimems“:1519394418412.3062,“mtimems”:1519394418412.3062,“ctimems”:1519394418412.3062,“berthtimems”:151939444418418402.2554,2010年3月14日::00:18.412Z","ctime":"2018-02-23T14:00:18.412Z","birthtime":"2018-02-23T14:00:18.402Z"}7.3检查文件或目录是否存在。参数为布尔类型值constfs=require('fs');letmkdir='./mkdir';fs.exists(mkdir,(exits)=>{if(exits){console.log(`${exits},${mkdir}文件存在`);}else{console.log(`${exits},${mkdir}filenotexists`)}});7.4同步修改文件访问时间和修改时间fs.utimes(path,atime,mtime,callback(err))修改文件访问时间和修改时间fs.utimesSync(path,atime,mtime)//修改文件访问时间和修改时间为当前时间constfs=require('fs');letmkdir='./mkdir';fs.utimes(mkdir,newDate(),newDate(),(err)=>{if(err){console.log(`fs.utimes${mkdir}filefailed~`);}else{console.log(`fs.utimes${mkdir}filesuccess~`);}})7.5修改文件或目录的权限同步修改文件或目录的权限fs.chmodSync(path,mode);fs.chmod(path,mode,callback(err))mode表示fs.chmod方法触发前的权限大小权限为drwxr-xr-x.fs.chmod方法触发后的权限为drw-------.constfs=require('fs');letmkdir='./mkdir';fs.chmod(mkdirOne,'0600',(err)=>{if(err){console.log(`fs.chmod${mkdir}filefailed`);returnfalse;}console.log(`fs.chmod${mkdir}filesuccess~`);});使用open方法或openSync方法打开文件并返回返回文件描述符后,可以使用fs模块中的fchmod方法修改文件的读写权限constfs=require('fs');letmkdir='./mkdir';fs.open(mkdir,'r',(err,fd)=>{if(err){console.log(`openfile${mkdir}failed~`);returnfalse;}fs.fchmod(fd,'0600',(err)=>{if(err){console.log(`fs.fchmod${mkdir}filefailed~`);returnfalse;}console.log(`fs.fchmod${mkdir}filesuccess~`);})});