A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐慧shanghai 中级黑马   /  2015-10-10 17:02  /  559 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有一个很重要的知识点:
我们在很多地方,上传文件等等的时候,会有一个目录选择给我们,我们要让某个文件夹下面的所有文件展示出来,或者把某个文件夹下面的指定的条件的文件列出来,例如我们上传图片,文件夹下面有很多,我们很难找,于是我们让它只显示jpg的就OK了,好了,我们看一下怎么实现。

这里我们要关注一下FILE的IPI
我们可以看到,FILE依然有实现的接口,但是这个我认为是非常常用的,下面参照些资料(我只是刚刚开始看JAVA没几天,所以常常需要找一些资料,呵呵)把这些个功能按需求分别实现下
先实现一个最简单的小需求:我们要求列出指定文件夹内的所有文件。
很简单(只是对java哦,如果用C就要忙活好一阵子了,哈哈哈)OK,have a try.

import java.io.*;

public class TestFile
{
public static void main(String[] args) throws IOException
{
File f = new File("c:\\");
int i = 0;

String [] ff = f.list();


for(String name:ff)
{
System.out.println(ff);
i++;
}
}
}

哦啦,这样就把C盘下的所有文件都列出来打印出来啦,简单吧。
但是不止于此,我们想想,我们可能在C盘下面有成百上千个文件我们要找某个文件只知道它的一部分文件名,咋办??
看接口文档还有这么个函数
f.list(new FilenameFilter()),这下不用我们烦恼啦,它已经帮我们把接口写好了,我们就差实现一下了,下面就把这个方法实现一下,重复的代码我就不贴了哈,太占篇幅看着自己都头大
String [] ff = f.list(new FilenameFilter()
{

@Override
public boolean accept(File dir, String name) {
  if(name.endsWith(".jpg"))
  return true;
  else
  return false;
}

});
看着简简单单几行代码。

还有一个方法,能够遍历出一个指定文件的所有文件(包括它的子文件夹下的文件)譬如我们要搜索某个文件夹下面的某个文件
当然,我们实现起来不会太难,java接口都写好了嘛
import java.io.*;

public class TestFile
{
public static void main(String[] args) throws IOException
{
File f = new File("c:\\");
showDir(f);
}

public static void showDir(File dir)
{
File[] files = dir.listFiles();
for(int x=0; x<files.length;x++)
{
  if(files[x].isDirectory())
   showDir(files[x]);  //如果是目录,那继续调用这个函数,知道它不是目录,到else部分跳出来
  else
   System.out.println(files[x]);//出口  当执行到这里,对应的函数也就结束了
}
}
}
这个用了个递归,稍稍解释一下
递归函数两个条件:
1:递归函数就是一个函数调用他本身。
2:递归函数需要一个出口

评分

参与人数 1黑马币 +5 收起 理由
xuchulong + 5 赞一个!

查看全部评分

5 个回复

倒序浏览
咳咳,文件过滤器。。。还以为什么IPI
回复 使用道具 举报
T-l-H、小生 发表于 2015-10-10 18:08
咳咳,文件过滤器。。。还以为什么IPI

还有一个递归呢,亲??这技术分我怎么一直是 2个都没有增加的??发了这么多帖子了
回复 使用道具 举报
T-l-H、小生 发表于 2015-10-10 18:08
咳咳,文件过滤器。。。还以为什么IPI

还有一个递归呢,亲??这技术分我怎么一直是 2个都没有增加的??发了这么多帖子了
回复 使用道具 举报
T-l-H、小生 发表于 2015-10-10 18:08
咳咳,文件过滤器。。。还以为什么IPI

还有一个递归呢,亲??这技术分我怎么一直是 2个都没有增加的??发了这么多帖子了
回复 使用道具 举报
徐慧shanghai 发表于 2015-10-12 09:49
还有一个递归呢,亲??这技术分我怎么一直是 2个都没有增加的??发了这么多帖子了 ...

那是因为,这种帖子,N多人都发过了,没什么新颖感,也没太多的技术可言,版主看到了也不会评技术分的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马