因为项目需要,最近写了一个文件管理器(即管理本地文件的模块)。
刚开始写这个模块的时候,想到的是用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开发之简单文件管理器实现方法。分享给大家供大家参考,具体如下: 这里运用Java I/O、ListActivity、Dialog、Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件...
**基于QT+Linux/Windows的简易文件管理器** 在IT领域,开发一款跨平台的文件管理器是一项常见的任务,这通常涉及到对操作系统API的深入理解以及用户界面设计。本项目是一个基于QT框架实现的简易文件管理器,它可以...
通过WEB页面实现一个简单的文件管理器,可以使用浏览器来管理服务器上所有磁盘下的文件和目录。 实现:文件和目录遍历;文件和目录的删除(单选、多选)、改名;目录的建立;文件的上传下载,所有目录和文件对应图标...
QT实现文件管理器是利用QT库创建的一个应用程序,旨在模仿Windows操作系统中的文件管理器功能,允许用户进行文件和文件夹的操作。 在Windows系统中,文件管理器是用户与文件系统交互的主要界面,它提供了浏览、组织...
RE文件管理器是由Speed Software开发的一款Android平台高权限文件管理器,获取ROOT权限后可对系统文件进行操作,可以说是Android系统上最好用的文件管理器,老牌文件管理工具,支持多种文件格式查看、权限管理、蓝牙...
Delphi文件管理器是一款基于Embarcadero Delphi开发的高效、强大的文件处理工具,它提供了丰富的功能,使用户能够方便地对计算机上的文件和目录进行各种操作。这款软件不仅适用于个人用户,也广泛应用于企业级文件...
在Android平台上,构建一个文件管理器是开发过程中常见的需求,尤其对于那些希望提供自定义文件操作体验的应用来说。本文将详细解析如何实现一个简单的安卓文件管理器,它具备文件类型筛选和异步加载文件缩略图的...
QT文件管理器(FileManage)是一款利用QT框架开发的文件管理应用程序,专为在Tiny210平台上运行的Linux系统设计。在QT4.7环境下,该应用已经过调试并成功运行,显示了其良好的兼容性和稳定性。QT是一个强大的跨平台...
### 基于Android文件管理器的设计与实现毕业设计开题报告 #### 一、选题背景与经过 在科技迅速发展的今天,智能手机已经成为人们生活中不可或缺的一部分,它不仅仅是通讯工具,更是集工作、娱乐、社交等多种功能于...
在Android平台上,开发一款仿小米文件管理器的应用是一项挑战性的任务,它涉及到对文件系统、UI设计以及用户交互的理解和实现。"android仿小米文件管理器"项目旨在创建一个类似于小米手机内置文件管理器的软件,让...
Java文件管理器是一款基于Java编程语言开发的软件,它的主要功能是模拟Windows操作系统中的文件管理系统,让用户能够方便地浏览、操作、管理和组织计算机上的文件和目录。作为一个专业的IT大师,我将详细介绍Java...
ASP.NET 文件管理器是一款基于ASP.NET技术开发的网络应用程序,它允许用户通过浏览器在远程客户端对服务器上的文件和目录进行管理。这个工具提供了类似于本地文件系统界面的功能,使得用户能够执行常见的文件操作,...
基于java swing 开发的文件管理器: 采用苹果 ios 主题风格,支持环形进度条显示cpu利用率 GUI文件管理系统 1、实现文件夹创建、删除、进入。 2、实现当前文件夹下的内容罗列。 3、实现文件拷贝和文件夹拷贝...
【标题】基于QSSH的sftp文件管理器 源代码 在IT行业中,文件管理是日常工作中不可或缺的一部分,尤其是在远程服务器操作时。SFTP(Secure File Transfer Protocol)是一种安全的网络协议,用于在不安全的网络环境中...
wince6 最好用的文件管理器,经测试。双窗口,可显示内置卡、sd卡、u盘。车载导航进ce最实用。 wince6 最好用的文件管理器,经测试。双窗口,可显示内置卡、sd卡、u盘。车载导航进ce最实用。
基于命令行的文件管理器(Java实现),仅包含未编译的java文件 基于命令行的文件管理器(Java实现),仅包含未编译的java文件
【Ajax文件管理器】是基于Web的文件管理系统,利用Ajax技术实现无刷新的交互体验,为用户提供方便快捷的文件操作方式。以下列出的7款免费、强大的Ajax文件管理器,适用于各种WEB应用的文件管理需求。 1. **...
Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。
云炫文件管理器可以支持批量更改文件名、批量翻译多国语言文件名、批量修改文件扩展名、批量改文件名或扩展名大小写、批量替换修改或删除文件名中的部分文字、批量排序编号文件、批量插入部分文字到原文件名标题中等...