因为项目需要,最近写了一个文件管理器(即管理本地文件的模块)。
刚开始写这个模块的时候,想到的是用jQuery的文件管理器插件jqueryFileTree。写完以后,发现一些问题,比如模块的样式和按钮功能都不好控制,改起来相当麻烦。后来想想,写这个模块也不是很难,下面是两次的对比图:
前者是用jQuery的插件做出的效果,后者是自己写的,当然也用到了jQueryeasyui的东西。
主要是左边树的实现,说白了,也就是遍历文件夹,拼成easyui tree需要的json根式的数据,上代码
package com.fable.fbs.fileUtil; import java.util.ArrayList; public class FileTreeNode { private String id; private String pid; private String text; private String state; private ArrayList<FileTreeNode> children = new ArrayList<FileTreeNode>(); public FileTreeNode(String id,String pid,String text,String state){ this.id = id; this.pid = pid; this.text = text; this.state = state; } public void add(FileTreeNode node){ if(node.pid.equals(this.id)) { this.children.add(node); }else { for (FileTreeNode tmp_node : children) { tmp_node.add(node); } } } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getState() { return state; } public void setState(String state) { this.state = state; } public ArrayList<FileTreeNode> getChildren() { return children; } public void setChildren(ArrayList<FileTreeNode> children) { this.children = children; } }
public final List<FileTreeNode> showDirectory(File file, List<FileTreeNode> list) throws Exception { File[] f = file.listFiles(); FileTreeNode node = null; for (int i = 0; i < f.length; i++) { String state = "open"; //文件夹是否展示,默认展开 if (f[i].isDirectory()) { File[] f1 = f[i].listFiles(); for (int j = 0; j < f1.length; j++) { if (f1[j].isDirectory()) { state = "closed"; //判断文件夹是否存在子文件夹,不存在状态 关闭 // node = new FileTreeNode(f[i].getAbsolutePath(), // f[i].getParent(), f[i].getName(), "closed"); } } node = new FileTreeNode(f[i].getAbsolutePath(), f[i].getParent(), f[i].getName(), state); list.add(node); showDirectory(new File(f[i].getAbsolutePath()), list);//递归 不断add子文件夹 } } return list; }
@RequestMapping(value = "List/fileTree") @ResponseBody public String fileTree(HttpServletRequest request,HttpServletResponse response){ FileUtil fileUtil = new FileUtil(); String path = this.getSystemPhysicalPath(); path.subSequence(0, path.length()-1); // String path = "d:\\test"; File file = new File(path); FileTreeNode root = new FileTreeNode(file.getAbsolutePath(), file.getParent(), "根目录", "open"); List<FileTreeNode> list1 = new ArrayList<FileTreeNode>(); JSONObject obj = null; // JSONArray obj = null; String s; try { List<FileTreeNode> list = fileUtil.showDirectory(file,list1); if (list != null) { for (int i = 0; i < list.size(); i++) { root.add(list.get(i)); } } obj = JSONObject.fromObject(root); // obj = JSONArray.fromObject(root.getChildren()); } catch (Exception e) { e.printStackTrace(); } s = "["+obj.toString()+"]"; return s;//返回easyui tree所需的json串 }
前台代码如下
$("#fileTree").tree({ url:"........", onClick: function(node){ var nodeId = encodeURI(encodeURI(node.id)); $('#grid').datagrid('load','../../Admin/Files/List/getFileByDir?dir='+nodeId); }, animate:true });
$("#fileTree") 是获取需要展示树的HTML元素,url对应后台返回easyui tree的json的url(整个框架用的是spring mvc)。$('#grid').datagrid('load','../../Admin/Files/List/getFileByDir?dir='+nodeId);这句话是加载某个文件夹下的文件列表,文件夹列表的json比较容易,这里不写了 。
整个过程就是这样,写的有点粗糙,不知道我的意思有没有表达清楚,如有不足,请各位多多指教,我也好学习
相关推荐
在Android系统中,文件管理器是一个至关重要的工具,它允许用户直观地查看、操作和管理设备上的文件和文件夹。这个项目的重点在于提供一个全面的解决方案,覆盖了从基本的文件操作到高级功能,如全选和批量处理。...
云炫文件管理器是电商、办公人员常用的专业管理软件之一。支持文件改扩展名、后缀名、大小写字母区分,自定义重命名、替换(删除文件名中的文字、空格、字符号等)、插入(添加新内容得命名文件名)、及翻译、随机等...
**基于QT+Linux/Windows的简易文件管理器** 在IT领域,开发一款跨平台的文件管理器是一项常见的任务,这通常涉及到对操作系统API的深入理解以及用户界面设计。本项目是一个基于QT框架实现的简易文件管理器,它可以...
(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,...
【C# 简单文件管理器】是一个基于C#编程语言开发的实用工具,旨在提供用户友好的界面,方便用户进行文件和目录的操作。它借鉴了Windows资源管理器的特性,包括清晰的图标显示和直观的操作方式,使得在不同磁盘间移动...
"Recovery文件管理器"是Android系统中一个特殊的功能,主要在设备重启进入恢复模式时使用,用于管理和操作系统的文件。在Android系统中,恢复模式(Recovery Mode)是一个独立于正常操作系统之外的环境,它提供了低...
《安卓文件管理器详解》 在移动设备领域,文件管理器是不可或缺的工具,它使得用户可以方便地浏览、组织、复制、删除以及共享手机或平板电脑上的文件。本文将详细探讨“安卓文件管理器”这一应用,以及其在root权限...
QT实现文件管理器是利用QT库创建的一个应用程序,旨在模仿Windows操作系统中的文件管理器功能,允许用户进行文件和文件夹的操作。 在Windows系统中,文件管理器是用户与文件系统交互的主要界面,它提供了浏览、组织...
【PHP文件管理器——File Manager概述】 PHP文件管理器,如File Manager,是基于PHP语言构建的一款实用工具,用于在Web界面中实现对服务器上文件和目录的操作。它提供了诸如浏览、上传、下载、重命名、移动、复制、...
"简易文件管理器"是一款专为用户打造的轻量级文件操作工具,旨在提供便捷的文件浏览、管理和组织功能。这款应用可能由第三方开发者编写,因此在使用时应注意尊重作者的劳动成果,如果软件内含有作者信息,应当遵循其...
Delphi文件管理器是一款基于Embarcadero Delphi开发的高效、强大的文件处理工具,它提供了丰富的功能,使用户能够方便地对计算机上的文件和目录进行各种操作。这款软件不仅适用于个人用户,也广泛应用于企业级文件...
### 基于Android文件管理器的设计与实现毕业设计开题报告 #### 一、选题背景与经过 在科技迅速发展的今天,智能手机已经成为人们生活中不可或缺的一部分,它不仅仅是通讯工具,更是集工作、娱乐、社交等多种功能于...
**R.E文件管理器详解** R.E文件管理器(Root Explorer)是一款专为安卓设备设计的强大文件管理工具,尤其在用户获取设备root权限后,它的功能更为全面且实用。这款应用允许用户深入到系统的各个角落,包括系统文件...
Java文件管理器是一款基于Java编程语言开发的软件,它的主要功能是模拟Windows操作系统中的文件管理系统,让用户能够方便地浏览、操作、管理和组织计算机上的文件和目录。作为一个专业的IT大师,我将详细介绍Java...
软件名称:小米文件管理器 MiXplorer 软件版本:v5 1 0 修正全中文版 软件语言:中文 软件大小:1 0M 软件包名:com android mixplorer 支持系统:Android 2 2+ MiXplorer文件管理器是一款流畅 漂亮 功能全面的文件...
在Android系统中,文件管理器是一个非常重要的组件,它允许用户查看、操作和管理设备上的文件和目录。这个源代码提供了深入理解Android如何处理文件和目录的内部机制的机会。让我们一起探讨一下Android文件管理器...
**Android 文件管理器源码详解** 在Android平台上,文件管理器是用户操作手机或平板设备上文件的重要工具。本文将深入解析一个自编的Android文件管理器源码,旨在帮助开发者理解和实现自己的文件管理应用。 首先,...
文件管理器是操作系统中的一个重要组件,它允许用户方便地组织、查看、操作和管理计算机上的文件和文件夹。"文件管理器 漂亮的界面和多功能菜单"这个标题揭示了我们关注的是一个设计精良且功能丰富的文件管理应用。...
《Android文件管理器源码详解》 在移动设备操作系统领域,Android以其开源、灵活的特点深受开发者喜爱。在Android开发中,文件管理是一个重要的部分,它涉及到用户数据的存储、访问和操作。本篇文章将深入探讨一个...
【标题】基于QSSH的sftp文件管理器 源代码 在IT行业中,文件管理是日常工作中不可或缺的一部分,尤其是在远程服务器操作时。SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在不安全的网络环境中...