知识大全 JSP页面文件目录树源码(递归算法)

Posted

篇首语:人勤地生宝,人懒地生草。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSP页面文件目录树源码(递归算法)相关的知识,希望对你有一定的参考价值。

JSP页面文件目录树源码(递归算法)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  <%@ page contentType="text/; charset=gb " language="java" import="java sql *" errorPage="" %>

  <>

  <head>

  <title></title>

  <meta equiv="Content Type" content="text/;charset=gb "; >

  <script language="JavaScript">

  <!

  function MM_goToURL() //v

  var i args=MM_goToURL arguments; document MM_returnValue = false;

  for (i= ; i<(args length ); i+= ) eval(args[i]+" location= "+args[i+ ]+" ");

  

  // >

  </script>

  <link href="css/ip css" rel="stylesheet" type=text/css>

  </head>

  <body topmargin = " " leftmargin = " " marginheight = " " marginwidth = " " bgcolor="#FFFFFF">

  <table border= cellspacing=" " cellpadding=" " height= %>

  <tr><td>

  </td>

  </tr>

  <tr valign="top">

  <td height= > <span id="menus"></span>

  <span id="view"></span>

  </td>

  </tr>

  <tr valign="bottom">

  <td>&nbsp;</td>

  </tr>

  </table>

  <div align=right></div>

  </body>

  <script>

  /**

  * 构造树 初值为

  */

  function isbrother()

  

  var is=flase;

  

  function tree(n)

  var id = new Array("bar" "pad" "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >" "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >" "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >");

  if(n == ) // 初始化变量

  n = ;

  i = ;

  s = "";

  

  s += "<table border= cellspacing= cellpadding= >";

  for(;i<tree_ar length ;i++)

  var k = (n >= tree_ar[i+ ][ ])? : ;

  if(tree_ar[i][ ]==false)

  

  id[ ]="<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >";

  

  s += "<tr id= "+id[k]+" value="+i+"><td >"+id[k+ ]+"</td><td>"+tree_ar[i][ ]+"</td></tr>"; // // 构造节点 注意这里的自定义属性value 作用是简化构造节点的描述 共享参数数组信息

  if(n > tree_ar[i+ ][ ]) // 若期望层次大于当前层次 结束本层次返回上一层次

  s += "</td></tr></table>";

  return tree_ar[i+ ][ ];

  

  if(n < tree_ar[i+ ][ ]) // 若期望层次小于当前层次 递归进入下一层次

  s += "<tr style= display:none ><td ";

  if(tree_ar[i][ ]==true)

   //如果有下个兄弟节点 则画兄弟节点间的连线

  s+="background= images/line gif border= align= absmiddle ";

  s+="></td><td>";

  var m = tree(tree_ar[++i][ ]);

  s += "</td></tr>";

  if(m < n) // 当递归返回值小于当前层次期望值时 将产生连续的返回动作

  s += "</table>";

  return m;

  

  

  

  s += "</table>";

  return s;

  

  </script>

  <script for=pad event=onclick>

  // 分枝节点的点击响应

  v = this parentElement rows[this rowIndex+ ] style;

  if(v display == block )

  v display = none ;

  this cells[ ] innerHTML = "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >";

  view innerHTML = "";// 自行修改为参数数组定义的闭合动作

  else

  v display = block ;

  this cells[ ] innerHTML = "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >";

  // view innerHTML = "<b>"+tree_ar[this value][ ]+"</b>"; // 自行修改为参数数组定义的展开动作

  /**

  * 以下代码用于关闭已展开的其他分枝

  * 如需自行关闭展开的分枝则从这里直接返回或删去这段代码

  */

  if(! tree_ar[this value] type) //如该节点为首次进入 则记录所在层次信息

  genTreeInfo(this);

  var n = *this value+ ;

  for(i=n;i<tree_ar length ;i++) // 关闭排列在当前节点之后的树

  if(tree_ar[i] type == "pad")

  tree_ar[i] obj style display = none ;

  tree_ar[i] obj cells[ ] innerHTML = "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >";

  

  

  while(tree_ar[ n][ ] > ); //回溯到当前树的起点

  while( n >= ) // 关闭排列在当前树的起点之前的树

  if(tree_ar[n] type == "pad")

  tree_ar[n] obj style display = none ;

  tree_ar[n] obj cells[ ] innerHTML = "<IMG src= border= align= absmiddle ><IMG src= border= align= absmiddle >";

  /** 记录层次信息 用以简化遍历树时的复杂的节点描述 **/

  function genTreeInfo(o)

  var el = o parentElement;

  for(var i= ;i<el rows length;i++)

  if(el rows[i] id != "")

  tree_ar[el rows[i] value] type = el rows[i] id;

  

  if(el rows[i] id == "pad")

  tree_ar[el rows[i] value] obj = el rows[i];

  tree_ar[el rows[i] value] obj = el rows[i+ ];

  

  

  

  </script>

  <script for=bar event=onclick>

  // 无分枝节点的点击响应

  //view innerHTML = "<b>"+tree_ar[this value][ ]+"</b>"; // // 自行修改为参数数组定义的点击动作

  // 自行修改为参数数组定义的点击动作

  </script>

  <script for=bar event=onclick>

  // 无分枝节点的点击响应

  //view innerHTML = "<b>"+tree_ar[this value][ ]+"</b>"; // \\uFFFD\\uFFFD\\uFFFDs\\uFFFDC\\uFFFD\\uFFFD?\\uFFFDQ\\uFFFD\\uFFFD\\uFFFD\\uFFFD?\\uFFFD\\uFFFD?\\uFFFDI\\uFFFD_??\\uFFFD\\uFFFD

  </script>

  <script>

  /**

  * 基本参数数组 根据具体应用自行扩展

  * 数据可较简单的由服务器端提供

  * 列 节点层次

  * 列 节点标题

  * 列 : 有无下个兄弟节点

  * 其余自行扩充

  */

  tree_ar = new Array(

  <%

  FileTree tree=new FileTree();

  String array=tree showFileTree("E:\\\\");

  %>

  <%=array%>

  new Array( "" false) // 为简化终止判断附加的空数据项

  /*** 创建菜单 ***/

  menus innerHTML =tree( );

  </script>

  </>

  import java io File;

  public class FileTree

  public FileTree()

  /**

  *

  * 生成文件目录树

  *

  * @param path

  * 目录路径

  * @return 返回jsp 页面所需的目录数组(JavaScript 数组)

  *

  */

  /*

  * 有无兄弟节点

  */

  private boolean hasNexetBrother = false;

  /*

  * 节点层次

  */

  private int index= ;

  public String showFileTree(String path)

  String s = "";

  File dir = new File(path);

  if (dir != null && dir isDirectory())

  String absolutePath = dir getAbsolutePath();

  absolutePath = absolutePath replaceAll("\\\\\\\\" "\\\\\\\\\\\\\\\\");//对 \\ 的处理 在JSP参数传递时 \\ 和空格会出现错误

  absolutePath = absolutePath replaceAll(" " "@"); //对空格的处理 这时用 @ 替代

  s += "new Array(" + index + " <a href=fileList jsp?path="

  + absolutePath + "\\\\\\\\ target=mainFrame>" + dir getName()

  + "</a> " + hasNexetBrother + ") ";

  hasNexetBrother = false;

  index++;

  File[] dirs = dir listFiles();

  java util List list = new java util ArrayList();

  for (int i = ; i < dirs length; i++)

  if (dirs[i] isDirectory()) //去除文件 得到文件夹列表

  list add(dirs[i]);

  

  

  for (int i = ; i < list size(); i++)

  if (i != list size() )

  hasNexetBrother = true;

  String dirpath = ((File) list get(i)) getAbsolutePath();

  s += showFileTree(dirpath);//对子文件夹递归处理

  

  index ;

  return s;

  

cha138/Article/program/Java/JSP/201311/20339

相关参考

知识大全 实现论坛树型结构的具体算法

  作者flyblue  实现论坛树型结构的算法很多具体你可以去的全文搜索中查询我现在的JSP论坛采用的也是当中的一种不用递归实现树型结构的算法现在我将论坛树型结构的具体算法和大家介绍一下和大家一起交

知识大全 JSP实现论坛树型结构的具体算法

JSP实现论坛树型结构的具体算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实现论坛树型结构

知识大全 查找 - 树上的查找 - 二叉排序树(四)

  ()二叉排序树上的查找  ①查找递归算法  在二叉排序树上进行查找和二分查找类似也是一个逐步缩小查找范围的过程  递归的查找算法  BSTNode*SearchBST(BSTreeTKeyType

知识大全 用定制标签库和配置文件实现对JSP页面元素的访问控制

用定制标签库和配置文件实现对JSP页面元素的访问控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 关于jsp页面使用jstl的异常分析

在jsp页面中使用如下代码加入jstl的支持发现页面如下异常那么很有可能是你的Tomcat的lib目录中没有jstl的jar包所以才导致tomcat无法解析jstl解决方法如下感兴趣的朋友可以参考下哈

知识大全 数据结构 9.10 二叉查找树的删除算法演示(二)

  希赛教育计算机专业考研专业课辅导招生  希赛教育计算机专业考研专业课辅导视频  希赛教育计算机考研专业课在线测试系统  T在函数DeleteBST中是一个递归调用的引用型参数第一次调用时的参数是指

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (五)[14]

  .试写出复制一棵二叉树的算法二叉树采用标准链接结构【山东大学二(分)】  类似本题的另外叙述有  ()已知二叉树T试写出复制该二叉树的算法(t→T)  ()(分)递归算法()(分)非递归算法【北方

知识大全 JAVA中用递归函数来删除子目录

JAVA中用递归函数来删除子目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java是一门强

知识大全 树 - 二叉树的遍历 (二)

  遍历序列  遍历二叉树的执行踪迹  三种递归遍历算法的搜索路线相同(如下图虚线所示)  具体线路为  从根结点出发逆时针沿着二叉树外缘移动对每个结点均途径三次最后回到根结点  >  遍历序列  (

知识大全 PHP源码---页面快速转向

PHP源码---页面快速转向  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <?