java获取某个目录下的所有文件及文件夹 展示到jsp页面为树形表格

树形菜单Demo menu.jsp:  String path = request.getContextPath();  String basePath = request.getScheme() + "://"    + request.getServerName() + ":" + request.getServerPort()    + path + "/"; %>  css/menu 阅读详情

0.前端是用的easyui的treegrid 

<meta http-equiv="X-UA-Compatible" content="IE=9" />
<div class="easyui-layout" fit="true">
  <div region="center" id="FileLog" style="padding:0px;border:0px">
		<table id="test" title="" class="easyui-treegrid" style="width:401px;height:550px"
			url="data\treegrid_data.json"
			rownumbers="true"
			idField="id" treeField="name">
		<thead>
			<tr>
				<th field="name" width="160">名称</th>
				<th field="size" width="100" align="right">大小</th>
				<th field="date" width="110">修改日期</th>
				<div style="margin-left:340px">
					<a href="#" class="easyui-linkbutton" onclick="xiazai()" iconCls="icon-put">下 载</a>
				</div>
			</tr>
		</thead>
	</table>
  </div>
 </div>

第一句代码是为了兼容ie9 url是存放json字符串的文件位置,当时做这个功能的时候,用了这种方式,动态修改json。

1.文件对象 实体类

public class FileObject {
    private  String  id;
    private String name ;
    private String size ;
    private String date ;
    private List<FileObject> children =new ArrayList<FileObject>();
}

2.后台方法(修改json文件)

//获取tomcat所在目录
String Dpath=System.getProperty("catalina.home")+File.separator+"webapps"+File.separator+"fpxtjsp"+File.separator+"file";
File rootFile = new File(Dpath);
File[] fs = rootFile.listFiles();
Arrays.sort(fs);
// 生成的json字符串
String FileString = formatString(rootFile);
// 将字符串写入到指定文件内
try {
	// 存放json字符串的文件夹
	String Parpath = System.getProperty("catalina.home") + File.separator + "webapps" + File.separator + "fpxtjsp" + File.separator + "data";
	File parFile = new File(Parpath);
	// 如果没有文件夹 则创建
	if (!parFile.exists()) {
		parFile.mkdir();
	}
	String dataPath = Parpath + File.separator + "treegrid_data.json";
	File file = new File(dataPath);
	// 如果没有该文件 则创建
	if (!file.exists()) {
		file.createNewFile();
	}
	FileWriter fw = new FileWriter(file.getAbsoluteFile());
	BufferedWriter bw = new BufferedWriter(fw);
	bw.write(FileString);
	bw.close();
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

3.读取文件夹 转为json字符串 

public static String formatString(File file) {
		FileObject fo = new FileObject();
		fo.setId("");
		fo = getSubFile(file, fo);
		return JSONObject.toJSONString(fo.getChildren());
	}

//递归查找文件夹
public static FileObject getSubFile(File file, FileObject fo) {
		String size = "";
		long fileS = file.length();
		// DecimalFormat df = new DecimalFormat("#.00");
		if (fileS < 1024) {
			size = fileS + "BT";
			// size = df.format((double) fileS) + "BT";
		} else if (fileS < 1048576) {
			size = fileS / 1024 + "KB";
			// size = df.format((double) fileS / 1024) + "KB";
		} else if (fileS < 1073741824) {
			size = fileS / 1048576 + "MB";
			// size = df.format((double) fileS / 1048576) + "MB";
		} else {
			size = fileS / 1073741824 + "GB";
			// size = df.format((double) fileS / 1073741824) +"GB";
		}
		fo.setSize(size);
		fo.setName(file.getName());
		Date date = new Date(file.lastModified());
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
		fo.setDate(sdf.format(date));
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			Arrays.sort(files, new CompratorByLastModified());
			if (files.length >= 0) {
				for (int i = 0; i < files.length; i++) {
					FileObject subfo = new FileObject();

					subfo.setId(fo.getId() + String.valueOf(i + 1));

					fo.getChildren().add(getSubFile(files[i], subfo));
				}
			}
		}
		return fo;
	}
//根据最后一次修改时间排序
static class CompratorByLastModified implements Comparator<File> {
		public int compare(File f1, File f2) {
			long diff = f1.lastModified() - f2.lastModified();
			if (diff > 0)
				return -1;
			else if (diff == 0)
				return 0;
			else
				return 1;
		}

		public boolean equals(Object obj) {
			return true;
		}
	}

 

jeesite左树右表开发 **1、在上一篇文章介绍单表增删改查基础上,我们可以仿照系统原有的结构复制部分代码来实现,首先复制userindex.jsp到自己创建的jsl目录,跟form和list表一个 目录,修改名字以及内容,如下图:** **2、配置好系统的菜单,原理大致就是在jslMachineIndex.jsp的树结构上,点击节点就会把对应的节点的officeid传到后台自定义的jslMachineControll 阅读详情

相关推荐

JSP实现树型结构TREE

本例是用JSP+EXTJS+JSON+MYQL实现的树型结构,例子结构清晰,便于学习。

树形结构的jsp展现

树形结构的jsp展现 100000 根文件夹 110000 一级文件夹 110200 二级文件夹 最简单可以用ztree等控件 select * from  (       /*select '权限树' name,'0' id,'-1' parentid from dual */     select t.name name,t.id  id,t.parentid  parent...

yuhui666666的博客 993

避开这些坑!晶圆封装中Wire Bonding(引线键合)的5种常见不良与实战调试心得

本文深入探讨晶圆封装中Wire Bonding(引线键合)的5种常见不良现象,包括Wire Offset、BSOB不良、球径/球厚异常、弧度不良和IMC问题。通过实际案例和参数优化方案,帮助工程师提升封装质量和可靠性,特别适用于半导体封装领域的专业人士。

weixin_33672109的博客 527

Java实现树形层级结构的表格 二

继续中午....   代码中com.cntrust.report.example包下已经提供三种表格的实例代码,可直接运行。   列头表格:ColHeadReport 使用场景:类似常见的信息列表,由列头和数据行构成,如下图:   生成代码:   package com.cntrust.report.example; import java.io.File; impo...

肆月之风的专栏 2519

哨兵2号遥感影像解析全流程:步骤、算法与AI应用详解

未来,多源数据融合与边缘计算技术的应用将进一步拓展遥感解析的边界。波段合成:选择10m分辨率波段(如B2、B3、B4、B8)进行Layer Stacking,生成多光谱影像。| 分类与识别 | Scikit-Learn、PyTorch | SVM、CNN、K-Means聚类 | 地块分类、目标检测 || 数据预处理 | SNAP、Sen2Cor | 大气校正、几何校正 | L2A产品生成、格式转换 || 波段融合 | ENVI、GDAL | Layer Stacking、重采样 | 多光谱影像合成 |

zhz5214的博客 2714

3.1 计算机视觉的发展和卷积神经网络概要(百度架构师手把手带你零基础实践深度学习原版笔记系列)

3.1 计算机视觉的发展和卷积神经网络(百度架构师手把手带你零基础实践深度学习原版笔记系列) 概要 计算机视觉作为一门让机器学会如何去“看”的科学学科,具体的说,就是让机器去识别摄像机拍摄的图片或视频中的物体,检测出物体所在的位置,并对目标物体进行跟踪,从而理解并描述出图片或视频里的场景和故事,以此来模拟人脑视觉系统。因此,计算机视觉也通常被叫做机器视觉,其目的是建立能够从图像或者视频中“感知”信息的人工系统。 计算机视觉技术经过几十年的发展,已经在交通(车牌识别、道路违章抓拍)、安防(人脸闸机.

aiAI 692

layui的树形表格

layui树形表格treetable treetable文件下载地址:https://github.com/whvcse/treetable-lay 下载好把treetable-lay引入你的项目 目前官方还没有提供treetable的API文档 使用方法 首先要引入我们下载的模板文件,base你是最大的目录文件treetable是你js文件所在 比如我的 layui.config({ ...

阳某的博客 6940

App渗透 - 人脸识别登录绕过

一、APP抓包和逆向破解加密算法打开APP是一个登录框抓包后发现参数被加密了使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数定位过去,一套加解密算法都写好了放在这放到浏览器console里面调试,果然没错二、寻找注入点首先测试了一下注入明文:{"userName":"TEST'...

渗透测试研究中心 2827

树状的数据,如何在jsp页面中呈阶梯状显示?

效果如下:    page language="java" import="java.util.*" pageEncoding="UTF-8"%>  taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  taglib uri="/struts-tags" prefix="s"%> String path = r

wxl1990721的专栏 982

Akamai移动端Sensor数据采集与BMP风控机制深度解析

本文深度解析了Akamai在移动端风控中的核心机制,重点阐述了Sensor数据如何通过采集陀螺仪、加速度计等硬件信息,结合设备指纹生成连续且符合物理规律的行为轨迹。详细剖析了数据从采集、加密校验到通过BMP风控三重验证(校验位、时间差、数据逻辑)的完整流程,并提供了从模拟优化到自建风控模型的实用应对思路。

quiet的专栏 290

金融监管压力测试场景生成

压力测试是一种评估金融资产或机构在极端市场条件下的表现和风险承受能力的方法。它通过模拟各种不利的市场情景,测试金融机构在这些情景下的财务状况和运营能力。压力测试的作用在于帮助金融机构识别潜在风险,评估应对策略,并制定应急预案。总结压力测试场景生成系统的开发过程和实现效果,强调其在金融监管中的重要性和应用价值。随着金融市场的发展,实时压力测试将越来越重要。未来,压力测试需要更加注重实时性和动态性,及时反映市场的变化。本文详细介绍了金融监管压力测试的重要性、核心概念、算法原理、系统架构以及实战案例。

AI天才研究院 1209

LayUi动态树形菜单拓展

代码】LayUi动态树形菜单拓展。

m0_67477525的博客 709

GStreamer中h264parse元素

h264parse是 GStreamer 中处理 H.264 视频流的关键元素,主要负责解析和准备 H.264 流以便后续处理。

深之JohnChen的专栏 1029

Extjs的ColumnTree的简单使用

在Extjs中我们可以通过像表格一样展示树形结构。其实现方式是主要通过扩展Ext.tree.TreePanel和Ext.tree.TreeNodeUI来实现的。因为目前使用的是Ext3.2,所以我们需要到Ext的文件夹的example里面去的ux目录下把ColumnNodeUI.js和ColumnNodeUI.css找出来放到自己建立的相应目录里。后台使用了fastjson-1.1.15.jar的...

XinhuaShuDiao的博客 377

三维空间刚体运动4-3:四元数线性插值方法:Squad

摘要:四元数插值三个方法Slerp、Squad和Spring既复杂又很重要,为了详细阐述,故每个方法独立成一篇博文讲解,没有插值的四元数是没有灵魂的,插值的重要性不言而喻。Slerp是经典的两点间一阶连续可导插值方法,Squad方法在Slerp的基础上实现多点间的一阶连续可导,而Spring则可以实现多点间的二阶连续可导,更适合复杂的曲线,此系列博文也是国内首篇介绍Spring的中文资料。

shao918516的博客 9217

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JSP 技巧整理

文章目录1 时间戳显示 1 时间戳显示 用 taglib 引用 fmt标签库 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 显示时间戳 <fmt:formatDate value="${user.created}" pattern="yyyy-MM-dd HH:mm:ss"/> ...

雨雾清影的个人博客 1279

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【EasyUI篇】TreeGrid树表格组件

微信公众号:程序yuan 关注可获得更多干货哦!。问题或建议,请公众号留言; ------------------------------------------------ 关注小编微信公众号获取更多资源 ------------------------------------------------ 查看--&gt; 全套EasyUI示例目录   30.TreeGrid树表...

ouYang的博客 5353

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JT项目数据库增删改查和页面回显

JT项目数据库查询和页面回显1. 查询页面显示2. 叶子目录显示3. 弹出框,树形结构展现 1. 查询页面显示 在item-list.jsp中可以看到 <table class="easyui-datagrid" id="itemList" title="商品列表" data-options="singleSelect:false,fitColumns:true,coll...

Anguswin的博客 1215

java jqgrid_jqgrid 前后端交互实例

原标题:jqgrid 前后端交互实例首先,jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信。一、jqGrid特性基于jquery UI主题,开发者可以根据客户要求更换不同的主题。兼容目前所有流行的web浏览器。Ajax分页,可以控制每页显示的记录数。支持XML,JSON,数组形式的数据源。提供丰富的选项配置及方法事件接口。...

weixin_39768917的博客 1541

layui会议OA项目数据表格新增改查

在上篇博客我们实现了左侧树形菜单与选项卡,今天我们来实现最重要的部分——数据表格的增删改查。

TestXzing的博客 1055

LayUI之增删改查

上一篇文章我们一起做了。

YZZdear的博客 2305

[温习]jqgrid 前后端交互实例

首先,jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信。 一、jqGrid特性 基于jquery UI主题,开发者可以根据客户要求更换不同的主题。 兼容目前所有流行的web浏览器。 Ajax分页,可以控制每页显示的记录数。 支持XML,JSON,数组形式的数据源。 提供丰富的选项配置及方法事件接口。 支持表格...

zhq的博客 3269

EasyUI(分页&模糊查询)

目录 一、创建数据库 二、创建包结构 三、页面搭建 四、entity层开发 五、dao层开发 六、service层开发 七、servlet开发 前言: 这次的功能是基于上一次的项目做的,如果有不懂可以看上一节 ...

qq_63845026的博客 1653

ext树表

如上是效果图: 做成简单的树表: 具体代码如下: 前台jsp: &lt;%@ page language="java" contentType="text/html; charset=UTF-8"%&gt; &lt;%@ include file="/WEB-INF/views/commons/taglibs.jsp"%&gt; &lt;html&gt; &lt;head

weixin_34357962的博客 170

java ligerui_[Java教程]jQuery LigerUI 使用教程入门篇_星空网

jQuery LigerUI 使用教程入门篇2012-01-170阅读目录获取最新代码ligerUI是什么如何使用如何扩展获取最新代码可以到http://ligerui.googlecode.com下载最新代码。简介jQuery LigerUI 是基于jQuery的一系列UI控件组合,简单而又强大,致力于快速打造Web前端界面解决方案。 因为是前端控件,跟服务器无关,可以适合.net,jsp,ph...

weixin_42503456的博客 205
上一篇: oracle安装记录
下一篇: SpringBoot前端页面获取form中元素,封装为json字符串,使用JPA更新数据
codeLife1993
博客等级 码龄8年 23粉丝 60原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值