有一个很重要的知识点:
我们在很多地方,上传文件等等的时候,会有一个目录选择给我们,我们要让某个文件夹下面的所有文件展示出来,或者把某个文件夹下面的指定的条件的文件列出来,例如我们上传图片,文件夹下面有很多,我们很难找,于是我们让它只显示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:递归函数需要一个出口 |