免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2428 | 回复: 3
打印 上一主题 下一主题

文件搜索问题请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-11 09:11 |只看该作者 |倒序浏览
如题,已知要查找的文件名name,以及该文件所在的最最顶层目录path(有可能该文件包含在path下的多级子目录下),请问如何在程序中找到该文件,并返回该文件的大小?谢谢!像这种设计到的多层目录如何查找? 比如如何实现该函数?private long getFileSize(String path, String name);

论坛徽章:
0
2 [报告]
发表于 2009-11-13 08:49 |只看该作者

回复 #1 x518889 的帖子

好像不容易做全,看来的查linux源码了。

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
3 [报告]
发表于 2009-11-13 15:38 |只看该作者
递归

论坛徽章:
0
4 [报告]
发表于 2009-11-13 18:33 |只看该作者
递归查找文件,可以参考一下这段代码。


  1.         public static ClassLoader createClassLoader(String path, ClassLoader parent)
  2.                         throws Exception {
  3.                 List<File> jarList = new ArrayList<File>();
  4.                 getClassPath(jarList, new JarsFilter(), new File(path, "lib"));

  5.                 List<URL> urlList = new ArrayList<URL>();
  6.                 urlList.add(new URL("file:///" + path + "/classes/"));

  7.                 for (int i = 0; i < jarList.size(); ++i) {
  8.                         urlList.add(new URL("file:///"
  9.                                         + ((File) jarList.get(i)).getCanonicalPath()));
  10.                 }
  11.                 return new URLClassLoader((URL[]) urlList.toArray(new URL[0]), parent);
  12.         }

  13.         public static void getClassPath(List<File> list, FilenameFilter filter,
  14.                         File f) {
  15.                 if (f.exists() && f.isDirectory()) {
  16.                         File[] ss = f.listFiles(filter);
  17.                         for (int i = 0; i < ss.length; ++i) {
  18.                                 if (ss[i].isFile()) {
  19.                                         list.add(ss[i]);
  20.                                 } else if (ss[i].isDirectory()) {
  21.                                         getClassPath(list, filter, ss[i]);
  22.                                 }
  23.                         }
  24.                 }
  25.         }

  26.         public static class JarsFilter implements FilenameFilter {
  27.                 public boolean accept(File dir, String name) {
  28.                         File f = new File(dir, name);
  29.                         boolean isDir = f.isDirectory();
  30.                         boolean isFile = f.isFile();
  31.                         boolean isJar = name.toLowerCase().endsWith(".jar");
  32.                         boolean isZip = name.toLowerCase().endsWith(".zip");
  33.                         return (isFile && (isJar || isZip)) || isDir;
  34.                 }
  35.         }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP