广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Node.JavaScript文件系统中目录的操作是怎样的
  • 778
分享到

Node.JavaScript文件系统中目录的操作是怎样的

2024-04-02 19:04:59 778人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关node.javascript文件系统中目录的操作是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。谈到对目录的操作,需要涉及到对目

这期内容当中小编将会给大家带来有关node.javascript文件系统中目录的操作是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

谈到对目录的操作,需要涉及到对目录遍历,其实目录也是我们可以把它看成一颗树。树是一种非线性的数据结构,被用来存储具有层级关系的数据,还被用来存储有序列表,其中有一种特殊的树:二叉树

有一种特殊的二叉树叫二叉查找树(BST),其他的特点是:相对较小的值保存在左节点中,较大的值保存在右节点中,因为这个特点使查找的效率特别高。

遍历二叉查找树有三种方式:中序,先序和后序

中序:按照节点上的键值,已升序访问树中所有节点,先访问左子树,在访问根节点,最后访问右子树。

Node.JavaScript文件系统中目录的操作是怎样的

中序

先序:先访问根节点,然后以同样方式访问左子树和右子树

Node.JavaScript文件系统中目录的操作是怎样的

先序

后序:先访问叶子节点,从左子树到右子树,再到根节点

Node.JavaScript文件系统中目录的操作是怎样的

后序

还有两种搜索方法:深度优先搜索和广度优先搜索

深度优先搜索时从一条路径的起始顶点开始一直到最后一个顶点,然后回溯,继续追溯下一条路径,直到到达最后的顶点,如此往复,知道没有路径为止。

Node.JavaScript文件系统中目录的操作是怎样的

深度优先搜索

广度优先搜索是从第一个顶点开始,首先检查最靠近第一个顶点的一层,再逐渐向下移动到离起始顶点最远的一层。

Node.JavaScript文件系统中目录的操作是怎样的

广度优先搜索

同步创建目录

_fs.accessSync_是fs.access的同步方法用于检查文件是否存在,检查是否对文件是否有读写权限,当操作成功时返回值和异步方法执行成功相同,但操作失败时会抛出异常。

_fs.mkdirSync_是同步创建目录

话不多说,我们直接上代码

let fs = require("fs"); let path = require("path") function mkdirSync(paths){     let arr = paths.split("/");     for(let i=0;i<arr.length;i++){      let currentPath = arr.slice(0,i+1).join("/");         try{           fs.accessSync(currentPath) //如果路径存在  不创建目录         }catch(e){            fs.mkdirSync(currentPath)         }      }  }  mkdirSync("a/b/c/d")  //默认创建目录  必须父级存在 才能创建子级

异步创建目录

function mkdir(paths,cb){     let arr = paths.split("/");     function next(index){        if(index>=arr.length) return cb();        let currentPath = arr.slice(0,index+1).join("/");        fs.access(currentPath,(err)=>{           if(err){                fs.mkdir(currentPath,()=>next(index+1))           }else{   //如果存在则不创建               next(index+1)           }        })     }     next(0) } mkdir("a/b/c/d/e",(err)=>{    console.log("创建完成"); })

Node.JavaScript文件系统中目录的操作是怎样的

创建目录

深度删除目录(同步)

fs.stat() 方法用于查询文件信息,可以用于查询文件的大小、创建时间、权限等相关信息。fs.stat() 是异步方法,还有一个同步方法  fs.statSync(path)返回一个对象

思路是:一个分支上先删除儿子再删除自己,然后到另一个分支上删除儿子再删除自己。

function removeSync(dir){    let statObj = fs.statSync(dir)    if(statObj.isDirectory()){       let dirs = fs.readdirSync(dir)   //返回一个数组     //   console.log(dirs);      for(let i = 0;i<dirs.length;i++){         //把路径进行包装          let current =path.join(dir,dirs[i])          removeSync(current) //删除儿子节点 再将自己删除      }      fs.rmdirSync(dir)  //删除自己    }else{        //文件就删除        fs.unlinkSync(dir)    } } removeSync("a")

广度删除目录(同步)

思路:通过while循环横向列出所有文件的路径,然后通过倒叙删除。

while(current = arr[index++]){     let statObj = fs.statSync(current);     if(statObj.isDirectory()){         let dirs =fs.readdirSync(current);         dirs = dirs.map(d=>path.join(current,d)); //当前儿子的文件夹路径         arr = [...arr,...dirs]     }  }

结果:[ 'a', 'a\b', 'a\b\c', 'a\b\c\d' ]

function wideSync(dir){    let arr = [dir];    let index = 0;    let current; //读取的当前项目    while(current = arr[index++]){       let statObj = fs.statSync(current);       if(statObj.isDirectory()){           let dirs =fs.readdirSync(current);           dirs = dirs.map(d=>path.join(current,d)); //当前儿子的文件夹路径           arr = [...arr,...dirs]       }    }    //倒叙删除    for(let i = arr.length-1;i>=0;i--){        let current = arr[i]        let statObj = fs.statSync(current);        if(statObj.isDirectory()){            fs.rmdirSync(current)        }else{            fs.unlinkSync(current)        }    } } wideSync("a")

深度删除目录(串行异步)

function rmdirSeries(dir,callback){     fs.stat(dir,(err,statObj)=>{         if(statObj.isDirectory()){              //读取文件内容              fs.readdir(dir,(err,dirs)=>{                  dirs = dirs.map(d=>path.join(dir,d))                  function next(index){                     if(index == dirs.length) return fs.rmdir(dir,callback)                     //先取出数组中的第一个  第一个删除后  在删第二个                     rmdirSeries(dirs[index],()=>next(index+1))                  }                  next(0)              })         }else{             fs.unlink(dir,callback)         }     }) } rmdirSeries("a",()=>{     console.log("删除成功"); })

深度删除目录(并行异步)

function removeDirParalle(dir,callback){     fs.stat(dir,(err,statObj)=>{         if(statObj.isDirectory()){              //读取文件内容              fs.readdir(dir,(err,dirs)=>{                  if(dirs.length == 0){                     return fs.rmdir(dir,callback)                  }                  dirs = dirs.map(d=>{                     let current = path.join(dir,d);                     //每个人删除之后就调用done                            removeDirParalle(current,done);                     return current                  })                  //并发删除                  let index = 0;                  function done(){                      if(++index == dirs.length){                         fs.rmdir(dir,callback)                      }                  }              })         }else{             fs.unlink(dir,callback)         }     }) } removeDirParalle("a",()=>{     console.log("删除成功"); })

上述就是小编为大家分享的Node.JavaScript文件系统中目录的操作是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网node.js频道。

--结束END--

本文标题: Node.JavaScript文件系统中目录的操作是怎样的

本文链接: https://www.lsjlt.com/news/82303.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.JavaScript文件系统中目录的操作是怎样的
    这期内容当中小编将会给大家带来有关Node.JavaScript文件系统中目录的操作是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。谈到对目录的操作,需要涉及到对目...
    99+
    2022-10-19
  • Linux中文件系统的目录结构是怎样的
    这篇文章主要介绍“Linux中文件系统的目录结构是怎样的”,在日常操作中,相信很多人在Linux中文件系统的目录结构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中文件系统的目录结构是怎样的...
    99+
    2023-06-12
  • windows操作系统的Hosts文件是怎样的
    windows操作系统的Hosts文件是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是Hosts文件? hosts文件是一个用于储存计算机网络中各...
    99+
    2023-06-14
  • Linux文件系统的目录和操作有哪些
    这篇文章主要讲解了“Linux文件系统的目录和操作有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux文件系统的目录和操作有哪些”吧!内存使用部分目录说明/binbin是Binar...
    99+
    2023-06-29
  • node.js中fs文件系统目录操作与文件信息操作的示例分析
    这篇文章主要介绍node.js中fs文件系统目录操作与文件信息操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!目录操作如果存在该目录,就创建失败同步创建目录fs.mkdi...
    99+
    2022-10-19
  • Vista操作系统文件共享方法是怎样的
    这篇文章将为大家详细讲解有关Vista操作系统文件共享方法是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  我们要把D盘中的名为Vista的文件夹共享的话,首先在该文件夹上点鼠标右键...
    99+
    2023-06-14
  • linux系统目录结构是怎样的
    小编给大家分享一下linux系统目录结构是怎样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!当在使用Linux的时候,如果您通过ls &nda...
    99+
    2023-06-13
  • Linux系统目录架构是怎样的
    本文小编为大家详细介绍“Linux系统目录架构是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux系统目录架构是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。文件系统为一个倒转的单根树状结构根...
    99+
    2023-06-06
  • 怎么在Linux操作系统中复制文件到多个目录中
    小编给大家分享一下怎么在Linux操作系统中复制文件到多个目录中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在 Linux 中用一个命令来将目录复制到多个文件夹...
    99+
    2023-06-16
  • Linux系统目录结构是怎样的呢
    今天就跟大家聊聊有关Linux系统目录结构是怎样的呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。登录系统后,在当前命令窗口下输入命令: ls /你会看到如下图所...
    99+
    2023-06-28
  • Linux操作系统中读取目录文件信息的详细过程
    本篇内容介绍了“Linux操作系统中读取目录文件信息的详细过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!大致流程:   1.添加头文件 ...
    99+
    2023-06-13
  • Linux日志文件系统是怎样工作的
    本篇内容介绍了“Linux日志文件系统是怎样工作的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件系统要解决的一个关键问题是怎样防止掉电或...
    99+
    2023-06-15
  • Linux系统的共享目录是怎样执行的
    这篇文章将为大家详细讲解有关Linux系统的共享目录是怎样执行的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。有时候我们需要在Linux与Windows之间共享资源,例如在Windows上面...
    99+
    2023-06-28
  • PHP中怎样获取目录中的文件名
    PHP中怎样获取目录中的文件名,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们来看一下PHP中怎样去获取目录下的文件相关知识。我们已经了解了在PHP中怎样去打开和关闭目录,在...
    99+
    2023-06-25
  • Java SE 7文件操作中的路径操作是怎样的
    Java SE 7文件操作中的路径操作是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java SE 7中对Path类的操作主要有两种:对路径的操作和对文...
    99+
    2023-06-17
  • PHP中的文件与目录操作有哪些
    本文小编为大家详细介绍“PHP中的文件与目录操作有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP中的文件与目录操作有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。路径与磁盘操作相对路径和绝对路径绝...
    99+
    2023-07-04
  • CentOS 操作系统网卡IP与启动配置文件是怎样的
    这篇文章将为大家详细讲解有关CentOS 操作系统网卡IP与启动配置文件是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。经过长时间学习CentOS网卡,你可能会遇到CentOS网卡问题...
    99+
    2023-06-16
  • Linux系统文件系统及文件基础是怎么样的
    这篇文章将为大家详细讲解有关Linux系统文件系统及文件基础是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。学习Linux,重难点在于掌握不同类别的文件系统及其作用。通过对Linux...
    99+
    2023-06-05
  • AIX操作系统的系统日志是怎么样的
    今天就跟大家聊聊有关AIX操作系统的系统日志是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。AIX操作系统errpt该命令普通用户权限也可使用,列出简短出错信息T(类型): ...
    99+
    2023-06-05
  • 基于JavaScript 的操作系统是怎样的
    这篇文章给大家介绍基于JavaScript 的操作系统是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我想大多数人听说过 Node.js,但是你听说过 NodeOS 吗...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作