我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > JavaWeb实现显示本地文件目录项目源码
总共48087条微博

动态微博

查看: 12941|回复: 49

JavaWeb实现显示本地文件目录项目源码

[复制链接]

34

主题

4

听众

110

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
#
发表于 2015-05-23 12:46:26 |只看该作者 |正序浏览
前段时间为是练习JQuery和java遍历目录,写了一个JavaWeb(使用Jsp+Servlet)的例子。源码是Myeclipse新建的项目,需要配置一些环境,比如JRE路径,以下是运行截图,界面模仿新浪微盘。
 

5 v5 m! ?- c( J
1 N1 J# X: X5 I* F- y( k

4 ^0 G7 k9 R4 M2 l2 F
  工作原理就是通过Java遍历系统(Windows)的目录,前台通过点击图标以ajax方式触发事件,后台以json数据的形式把文件结构返回给前台,前台通过JS解析JSON数据内容,展示不同的图片。目前尚存在的问题有无法显示C盘目录下的文件。
  下面贴出其中核心的代码,即遍历目录的工具类IterateDir.java
  1. package com.uudisk.utils;# K8 G" C9 X+ _' y/ `
  2. * L, F+ z( P) c3 g* U' C5 Q
  3. import java.io.File;
    ' W8 z( t8 n1 S  k8 C) a5 V6 F
  4. import java.io.FileInputStream;- W- A1 i4 m& C2 |3 O
  5. import java.text.DecimalFormat;
    - T& k: Y2 _4 |) d9 Y$ }0 ]* l
  6. import java.util.ArrayList;; _; P0 D; T. l3 M' d/ A$ Q
  7. import java.util.LinkedList;4 Y3 p0 i" A- u& L  W
  8. import java.util.List;
    ) e3 l4 s! K4 `: b

  9. 3 J0 ~9 }) I7 l0 R
  10. import com.uudisk.domain.DirBean;+ j5 d5 x  [# [. z
  11. import com.uudisk.domain.FileBean;; m- l3 n% h& F
  12. import com.uudisk.domain.RootBean;4 h5 y) F7 O4 F' ~
  13. ; \5 n' `, O( F0 }
  14. public class IterateDir {
    & {" w( t6 D3 J
  15.     /*
    " y& d- W2 j& t3 |, ?6 Z
  16.      * 获取根目录信息- j: U0 ?0 B8 U$ Q/ M
  17.      */
    , S3 R" ^% ^' R9 U5 s% u9 Y
  18.     public static List<RootBean> getDiskInfo(){
    % A/ Q& |: @* o+ i& {
  19.         //获取盘符- B' t% }$ ^/ @- g3 _! g! }
  20.         File []files=File.listRoots();1 ~% ^+ v/ Q) e! K- x) `. o  H
  21.         List<RootBean>roots=new ArrayList<RootBean>();
    5 N% r+ G! Q, u$ X3 N  F, Z
  22.         for(File file:files){
    5 _7 r* {$ n) g% i
  23.             if(file.getTotalSpace()!=0){
    4 Z! G! R( s' J  M
  24.                 RootBean rootBean=new RootBean();
      W: d' f+ m: r
  25.                 rootBean.setDiskPath(file.getAbsolutePath());9 ^% k) @; F( ]& Y& ?' P
  26.                 rootBean.setDiskName(file.getAbsolutePath().charAt(0)+"");
    + A" A$ v. m$ a& t; O6 [7 P
  27.                 rootBean.setDiskSize(FormetFileSize(file.getTotalSpace()));+ R) y: @( e0 F+ K0 I! K
  28.                 rootBean.setAvilableSize(FormetFileSize(file.getFreeSpace()));
    5 s6 C" J. a4 l8 C4 b! J+ n
  29.                 roots.add(rootBean);
    1 F( @& p: J+ F* W1 S, k  [( ]
  30.             }( N- E; u+ @( @. Q2 w
  31.         }
    ) T% Z" b4 S# s' |9 J5 ~- Z
  32.         return roots;- A- `0 Z6 {  p+ N! Z. K: M# Y) z
  33.     }
    ' U" _3 w  _% _6 J3 g( j- t
  34.     /*, i+ K2 F, Y$ c
  35.      * 通过递归得到某一路径下所有的目录及其文件
    0 Z7 E1 L7 k9 X: D3 m$ n
  36.      */
    . K+ `4 D: {" A. b+ R
  37.     public static DirBean getFiles(String dirPath) throws Exception{) ]3 e. ]* }: ^
  38.         File root = new File(dirPath);
    0 s4 f' _$ _) v1 k4 b7 y
  39.         DirBean dirBean=null;0 _7 v6 X# x4 {) s) w
  40.         if(root.exists()){
    6 j2 n; ?/ P! [- _) B$ b: x: ]9 ~
  41.             dirBean=new DirBean();
    - `4 F2 ?0 K, n* S
  42.             String dirSize="";5 O) T3 p5 M: u. o4 g' Z4 n0 _
  43.             int dirCount=0;
    4 N( u  s! o, H" m
  44.             List<FileBean> filelist=new LinkedList<FileBean>();
    * B- c9 n+ |. G5 @
  45.             if(root.isDirectory()){  y8 b9 \4 O7 o5 e$ j! L  y
  46.                 File[] files = root.listFiles();
    4 [: v8 A( |) |* u- J+ N
  47.                 for (File file : files) {
    " F& i% Y6 P! R
  48.                     FileBean fileBean=new FileBean();
    6 S/ Q( `' w0 f8 T
  49.                     String realPath=file.getAbsolutePath();
    8 b8 S: ^6 Z0 q3 T' `
  50.                     fileBean.setFilePath(realPath);
    ! {3 q" L! x0 D3 n9 Y( d
  51.                     fileBean.setFileName(getFileName(realPath));: E8 b: F: ]7 P% j; t" t* P
  52.                     if (file.isDirectory()) {
    4 [2 M# T" b; m, b
  53.                         fileBean.setFileType("DIR");
    $ m. T" N2 `% l4 S6 T' b
  54.                         //fileBean.setFileSize(FormetFileSize(getFileSize(file)));) R6 _( v" T7 a- E3 u
  55.                         fileBean.setFileSize("");* Q$ }. s7 q$ x7 z6 L
  56.                     }else{3 J) f- k2 `0 Z2 o- ?3 @" f* ^
  57.                         fileBean.setFileType(getFileType(getFileName(realPath)));. P( l. B! a% d. X1 J/ W4 Y
  58.                         fileBean.setFileSize(FormetFileSize(getFileSizes(file)));" V/ n' P+ g3 G8 r  K9 \. @
  59.                     }+ @3 H- I" p- P- b6 K: n
  60.                     filelist.add(fileBean);
    9 ^: O( s. e7 L& w
  61.                 }
    8 [7 P. q/ T" i9 N6 ]- X7 D3 ]
  62.             }else{4 x" r7 A9 p4 E# b
  63.                     dirSize=FormetFileSize(getFileSizes(root));
    * ~' M# w8 G+ ^) F3 G" T  g$ _
  64.             }
    , u% P; d3 c0 F+ A' b3 P9 c9 }
  65.             dirBean.setDirCount(dirCount);6 X8 _8 S5 `' u5 N1 }% F
  66.             dirBean.setDirSize(dirSize);
    - k# Y; ?- i7 w% i  w
  67.             dirBean.setDirPath(dirPath);% l1 w; [! Z/ \" p3 t
  68.             dirBean.setFiles(filelist);
    4 x) i- P& w% G2 ~: c0 m: x
  69.         }else{
    - k' u8 k3 i2 [
  70.             System.out.println("文件或文件目录不存在");
    " q) x* _: b0 G  Z$ T. P) D
  71.         }        
    1 ]$ O1 W2 u& n; D8 w: N
  72.         return dirBean;
    # _: K; R! s: s3 W  `* x9 h. ^
  73.     }
    , p" t) ]; l! K. f; Y
  74.     private static String getFileType(String fileName) {% L: a8 {& {) j! P! a
  75.         return fileName.substring(fileName.lastIndexOf(".")+1).toUpperCase();9 j+ O: c( ~- ^! r$ ~0 U6 }9 y& S
  76.     }+ M) `. M7 E5 y, Z4 A2 a# T
  77.     //获取文件名' C5 ?  T- d1 @# M% E
  78.     static String getFileName(String filePath) {7 |3 g7 w6 y& w0 J
  79.         String [] fileItems=filePath.split("\\\");
    $ R" w) v' F1 e: E! M. O7 f3 }5 F
  80.         return fileItems[fileItems.length-1];- c4 r, {$ a4 T+ L) X6 i
  81.     }. b  F5 B( H5 }1 }; E5 E3 t- `  x
  82.     //取得文件大小
    + c, s; F! z0 s% R2 y8 _
  83.     public static long getFileSizes(File f) throws Exception{& A% A; ?% ^: Q2 Q5 k! b4 v2 C
  84.         long s=0;+ }! u" _+ w/ a5 I4 c  y
  85.         if (f.exists()) {
    # \1 M! q: `/ |. t
  86.             FileInputStream fis = null;- w1 `, b8 o) c+ ]& {5 C9 C
  87.             fis = new FileInputStream(f);$ q4 ~7 F& W. z) h4 s( D+ M7 k
  88.            s= fis.available();
    ; J  p8 p4 _6 @, W
  89.         } else {! t6 g5 x/ U, Y* k( ?9 |
  90.             System.out.println("文件不存在");9 g( G. H8 ]5 P
  91.         }. f, K& t2 a# A$ k$ B/ O
  92.         return s;
    & n" t2 Q' E: K" E# q
  93.     }: B: E' r) G: g/ v0 U
  94.     //取得文件夹大小: Z* g2 _; W: f/ W. v
  95.     public static long getFileSize(File f)throws Exception
    ; V2 i8 L+ p( `
  96.     {
    9 ^& G: j' u& W: W3 t
  97.         long size = 0;
    ' @2 a- k) J9 G- O
  98.         File flist[] = f.listFiles();
    $ v* X. ^% y  U& H% z/ R. Q
  99.         for (int i = 0; i < flist.length; i++)* E% i9 x3 z  |% L- O
  100.         {: M9 B+ `% B) z9 ^) \: F6 }
  101.             if (flist[i].isDirectory())
    * x: S5 T, L& q: i" ~
  102.             {( W4 \2 Q' o  d  D# ~5 _. v( l
  103.                 size = size + getFileSize(flist[i]);
    3 P' k, e  O1 Z! i# I: W
  104.             } else0 Z! S! r) i$ _
  105.             {
    & r  A0 v8 r* h  r0 x0 ?; ^
  106.                 size = size + flist[i].length();
    0 _( s' J4 F5 I( u
  107.             }
    . t/ T; _" r( u# {" o$ c" {
  108.         }
    5 i- ]! U5 S# r' G" p: I
  109.         return size;9 ?- R, ^8 V* \/ [( G8 s/ z* G: @2 _
  110.     }+ U/ j& l1 [- Q7 w
  111.     public static String FormetFileSize(long fileS) {//转换文件大小
    1 G, A* O# I) B- e2 A- R" D4 e6 x
  112.         DecimalFormat df = new DecimalFormat("#.00");
    3 G" ]( b4 e8 B
  113.         String fileSizeString = "";
    / L3 I% b6 V8 o( M/ a1 n* v; S% f
  114.         if (fileS < 1024) {
    % z. \' l  z; l
  115.             fileSizeString = df.format((double) fileS) + "B";
    5 o- I; J  r" y
  116.         } else if (fileS < 1048576) {$ |' O' Q5 L7 t& n% k
  117.             fileSizeString = df.format((double) fileS / 1024) + "KB";% m" }& }# J  K
  118.         } else if (fileS < 1073741824) {7 B# ]" f- ~$ g, D# u$ C
  119.             fileSizeString = df.format((double) fileS / 1048576) + "M";
    ) j5 Z5 p1 W, t1 W' z8 z
  120.         } else {: I- `1 A7 u$ _* X
  121.             fileSizeString = df.format((double) fileS / 1073741824) + "G";6 w* R; Z: x% p9 l2 U
  122.         }
    5 X! s+ J2 z" I5 N- c/ K! E  F
  123.         return fileSizeString;
    % |2 K! O3 F8 v
  124.     }
    . H: l  g) D" L  M, u; N
  125.    
    % E, \. G7 ]+ h" O
  126.     public static long getlist(File f){//递归求取目录文件个数
    # m$ Y6 W2 s  d/ X9 G
  127.         long size = 0;. W4 b9 c, A2 W* N
  128.         File flist[] = f.listFiles();
    ; ]' ]. l# e1 {  F5 g9 V
  129.         size=flist.length;
    9 K4 y1 }6 c; _0 f0 C$ M  F4 Z1 B/ O7 \" u
  130.         for (int i = 0; i < flist.length; i++) {+ @. L) _  Q$ l* {) Z0 Y* [
  131.             if (flist[i].isDirectory()) {$ v+ v. l9 D8 D3 p
  132.                 size = size + getlist(flist[i]);
    1 Y8 }' A" ^! d9 S# I/ P4 @) z
  133.                 size--;8 v5 Q- i; ?  Y8 X7 |- k
  134.             }* ~* r6 J+ k9 n! x/ Z9 `
  135.         }5 G! v: Z8 C0 N& ]
  136.         return size;
    / }5 a4 P, v- ?& V

  137. 1 [4 E" o, V8 z6 t9 d, G# Y
  138.     }& y1 l2 p/ S6 l7 M& N- L$ j
  139. }
复制代码
4 ]; U* ]; m+ b8 ]( G' x3 z! |
JavaWeb实现显示本地文件目录项目源码
解压码:
游客,如果您要查看本帖隐藏内容请回复
5 `( ]  Y+ }. D: U

' X+ `8 K1 ?6 d2 ?. E/ e. E
4 V8 ~8 h2 b" D. O

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

ape    

0

主题

0

听众

59

金钱

二袋弟子

该用户从未签到

49#
发表于 2018-05-10 20:14:19 |只看该作者
楼主威武啊!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

18

主题

0

听众

2680

金钱

七袋长老

该用户从未签到

48#
发表于 2017-08-04 23:58:31 |只看该作者
66666666666
0 Z2 l- I% j0 I. r8 C
回复

使用道具 举报

6

主题

1

听众

135

金钱

三袋弟子

该用户从未签到

47#
发表于 2017-04-30 17:04:40 |只看该作者
6666666666666
回复

使用道具 举报

2

主题

0

听众

105

金钱

三袋弟子

该用户从未签到

46#
发表于 2017-04-24 17:16:21 |只看该作者
啦啦啦啦啦啦啦
8 e+ l7 A5 j& l5 F+ d% \
回复

使用道具 举报

4

主题

0

听众

175

金钱

三袋弟子

该用户从未签到

45#
发表于 2016-12-10 09:10:17 |只看该作者
感谢分享~~~不胜感激~~~
回复

使用道具 举报

2

主题

0

听众

134

金钱

三袋弟子

该用户从未签到

44#
发表于 2016-11-27 22:36:32 |只看该作者
666666666666666666666666
回复

使用道具 举报

3

主题

1

听众

898

金钱

五袋长老

该用户从未签到

43#
发表于 2016-10-14 10:44:35 |只看该作者
感谢楼主的奉献
回复

使用道具 举报

5

主题

0

听众

174

金钱

三袋弟子

该用户从未签到

42#
发表于 2016-05-26 16:30:29 |只看该作者
做ftp客户端访问可以用得上
回复

使用道具 举报

1

主题

0

听众

1460

金钱

六袋长老

该用户从未签到

41#
发表于 2016-05-17 07:56:53 |只看该作者
多谢分享+ h0 s/ Q3 B8 q# w
6 R5 D6 b. `+ c- I" v
回复

使用道具 举报

1

主题

0

听众

77

金钱

二袋弟子

该用户从未签到

40#
发表于 2016-05-16 19:29:17 |只看该作者
ting hao de   wo xihuan
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表