Java+JQuery实现网页显示本地文件目录(含源码)
原文地址:http://www.cnblogs.com/liaoyu/p/uudisk.html
源码地址:https://github.com/liaoyu/uudisk
前段时间为是练习JQuery和Java遍历目录,写了一个JavaWeb(使用Jsp+Servlet)的例子。源码是Myeclipse新建的项目,需要配置一些环境,比如JRE路径,以下是运行截图,界面模仿新浪微盘。
工作原理就是通过Java遍历系统(Windows)的目录,前台通过点击图标以ajax方式触发事件,后台以json数据的形式把文件结构返回给前台,前台通过JS解析JSON数据内容,展示不同的图片。目前尚存在的问题有无法显示C盘目录下的文件。
下面贴出其中核心的代码,即遍历目录的工具类IterateDir.java
package com.uudisk.utils; import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; import com.uudisk.domain.DirBean;
import com.uudisk.domain.FileBean;
import com.uudisk.domain.RootBean; public class IterateDir {
/*
* 获取根目录信息
*/
public static List<RootBean> getDiskInfo(){
//获取盘符
File []files=File.listRoots();
List<RootBean>roots=new ArrayList<RootBean>();
for(File file:files){
if(file.getTotalSpace()!=0){
RootBean rootBean=new RootBean();
rootBean.setDiskPath(file.getAbsolutePath());
rootBean.setDiskName(file.getAbsolutePath().charAt(0)+"");
rootBean.setDiskSize(FormetFileSize(file.getTotalSpace()));
rootBean.setAvilableSize(FormetFileSize(file.getFreeSpace()));
roots.add(rootBean);
}
}
return roots;
}
/*
* 通过递归得到某一路径下所有的目录及其文件
*/
public static DirBean getFiles(String dirPath) throws Exception{
File root = new File(dirPath);
DirBean dirBean=null;
if(root.exists()){
dirBean=new DirBean();
String dirSize="";
int dirCount=0;
List<FileBean> filelist=new LinkedList<FileBean>();
if(root.isDirectory()){
File[] files = root.listFiles();
for (File file : files) {
FileBean fileBean=new FileBean();
String realPath=file.getAbsolutePath();
fileBean.setFilePath(realPath);
fileBean.setFileName(getFileName(realPath));
if (file.isDirectory()) {
fileBean.setFileType("DIR");
//fileBean.setFileSize(FormetFileSize(getFileSize(file)));
fileBean.setFileSize("");
}else{
fileBean.setFileType(getFileType(getFileName(realPath)));
fileBean.setFileSize(FormetFileSize(getFileSizes(file)));
}
filelist.add(fileBean);
}
}else{
dirSize=FormetFileSize(getFileSizes(root));
}
dirBean.setDirCount(dirCount);
dirBean.setDirSize(dirSize);
dirBean.setDirPath(dirPath);
dirBean.setFiles(filelist);
}else{
System.out.println("文件或文件目录不存在");
}
return dirBean;
}
private static String getFileType(String fileName) {
return fileName.substring(fileName.lastIndexOf(".")+1).toUpperCase();
}
//获取文件名
static String getFileName(String filePath) {
String [] fileItems=filePath.split("\\\\");
return fileItems[fileItems.length-1];
}
//取得文件大小
public static long getFileSizes(File f) throws Exception{
long s=0;
if (f.exists()) {
FileInputStream fis = null;
fis = new FileInputStream(f);
s= fis.available();
} else {
System.out.println("文件不存在");
}
return s;
}
//取得文件夹大小
public static long getFileSize(File f)throws Exception
{
long size = 0;
File flist[] = f.listFiles();
for (int i = 0; i < flist.length; i++)
{
if (flist[i].isDirectory())
{
size = size + getFileSize(flist[i]);
} else
{
size = size + flist[i].length();
}
}
return size;
}
public static String FormetFileSize(long fileS) {//转换文件大小
DecimalFormat df = new DecimalFormat("#.00");
String fileSizeString = "";
if (fileS < 1024) {
fileSizeString = df.format((double) fileS) + "B";
} else if (fileS < 1048576) {
fileSizeString = df.format((double) fileS / 1024) + "KB";
} else if (fileS < 1073741824) {
fileSizeString = df.format((double) fileS / 1048576) + "M";
} else {
fileSizeString = df.format((double) fileS / 1073741824) + "G";
}
return fileSizeString;
} public static long getlist(File f){//递归求取目录文件个数
long size = 0;
File flist[] = f.listFiles();
size=flist.length;
for (int i = 0; i < flist.length; i++) {
if (flist[i].isDirectory()) {
size = size + getlist(flist[i]);
size--;
}
}
return size; }
}
Java+JQuery实现网页显示本地文件目录(含源码)的更多相关文章
- 图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)
图书管理系统数据库设计实验报告 文章目录 更新日志 1.概述 2.需求分析 2.1需要实现的功能 2.2业务流程图 2.2.1学生流程图 2.2.2管理员流程图 2.2.3超级管理员流程图 2.3功能 ...
- 原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想)
原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想) 总体思想: 希望让调用方通过 http调用传入一个需要生成图片的网页链接生成一个网页的图片并返回图片链接 ...
- 微信公众平台开发-OAuth2.0网页授权(含源码)
微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...
- jQuery使用():Deferred有状态的回调列表(含源码)
deferred的功能及其使用 deferred的实现原理及模拟源码 一.deferred的功能及其使用 deferred的底层是基于callbacks实现的,建议再熟悉callbacks的内部机制前 ...
- android NDK开发在本地C/C++源码中设置断点单步调试具体教程
近期在学android NDK开发,折腾了一天,最终可以成功在ADT中设置断点单步调试本地C/C++源码了.网上关于这方面的资料太少了,并且大都不全,并且调试过程中会出现各种各样的问题,真是非常磨人. ...
- C++ JsonCpp 使用(含源码下载)
C++ JsonCpp 使用(含源码下载) 前言 JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择JSON的全称为:JavaScri ...
- 百度智能手环方案开源(含源码,原理图,APP,通信协议等)
分享一个百度智能手环开源项目的设计方案资料. 项目简介 百度云智能手环的开源方案是基于Apache2.0开源协议,开源内容包括硬件设计文档,原理图.ROM.通讯协议在内的全套方案,同时开放APP和云服 ...
- java学习笔记(3)数据类型、源码、反码、补码、精度损失、基本数据类型互相转换
关于java中的数据类型: 1.数据类型的作用是什么? 程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用的空间大小不同. 数据类型的作用是指导java虚拟机(JVM)在运行程序的 ...
- Java 序列化和反序列化(三)Serializable 源码分析 - 2
目录 Java 序列化和反序列化(三)Serializable 源码分析 - 2 1. ObjectStreamField 1.1 数据结构 1.2 构造函数 2. ObjectStreamClass ...
随机推荐
- 3d max地形建造
这里来记录一下max里面建造一个地形. 1.创建一个平面,调节平面的属性,包括长宽,和分段 2.然后建造一个道路 然后选择样条线工具,调节线条的轮廓. 3.使用合并工具,将线条和地面进行合并成为一个物 ...
- Virtual Studio C++ Version Macro - _MSC_VER
MSVC++ (Visual Studio ) MSVC++ (Visual Studio ) MSVC++ (Visual Studio ) MSVC++ (Visual Studio ) MSVC ...
- EDMX更新实体后出现键值映射问题
近期做项目的EF改版时,在DB(ORACLE)中的表里添加一个新的PK,去除原有的PK. 在DB已添加完成操作,但这时在EDMX里进行从DB更新到EF里,更新完成后就发生如下错误提示: Error 6 ...
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
- C#创建微信自定义菜单
string posturl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_to ...
- IOS 学习笔记 2015-04-15 Xcode 工程模板分类
一 Application类型 我们大部分呢的开发工作都是使用Application类型的模板创建IOS程序开始的,该类型包括5个模板1 Master-Detail-Application ...
- processon完全装逼指南
一.引言 作为一名IT从业者,不仅要有扎实的知识储备,出色的业务能力,还需要具备一定的软实力.软实力体现在具体事务的处理能力,包括沟通,协作,团队领导,问题的解决方案等,这些能力在关键时刻比硬性的技术 ...
- 【自用代码】Json转对象
private static object JsonToObject(string jsonString, object obj) { var serializer = new DataContrac ...
- (转载)EhLib 在 Delphi 7 下的安装方法
EhLib 在 Delphi 7 下的安装方法 1.将 EhLib 解压到一个目录,如:E:\VCL\EhLib: 2.将 EhLib 安装目录下 Common 目录.DataService 目录下的 ...
- 大话设计模式(带目录完整版).pdf等
点击进入百度网盘 大话设计模式(带目录完整版).pdf等 保存至网盘下载二维码举报 赞(0)| 评论 | 分享至 分享时间:2014-04-01 11:02 | 467次浏览 130次下载 81次保存 ...