Java IO(2)--File类

对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务。
—-Java编程思想
File(文件)类,既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。下面分析它的应用—-目录列表器。

代码实例一:

package Java_IO;

import java.io.File;
import java.util.Arrays;

/**
 * Created by LKL on 2017/2/27.
 */
public class DirList {
    public static void main(String[] args){
        File path = new File(".");
        String[] list;
        if (args.length==0){
            list=path.list();
        }else{
            list=path.list(new DirFilter(args[0]));
        }
        //按字母排序
        Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
        for(String dirItem : list){
            System.out.println(dirItem);
        }
    }
}

package Java_IO;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

/**
 * Created by LKL on 2017/2/27.
 */
public class DirFilter implements FilenameFilter {
    private Pattern pattern;
    public DirFilter(String arg) {
        pattern = Pattern.compile(arg);
    }
    public boolean accept(File dir,String name){
        return pattern.matcher(name).matches();
    }
}

运行上述代码结果如下:

.idea
out
program.iml
src

看了上述代码就可以知道,获取目录的列表,主要是用了list()这个方法,下面看看它的源码:

public String[] list() {
        SecurityManager security = System.getSecurityManager();
        if (security != null) {
            security.checkRead(path);
        }
        if (isInvalid()) {
            return null;
        }
        return fs.list(this);
    }

list中底层则是用一个栈的方式,获取到文件列表。
创建了DirFilter这个类是为了把accept()方法提供给list()使用,使list()可以回调accept(),进而决定哪些文件包含在列表中。
accept()会使用一个正则表达式的matcher对象,来查看此正则表达式regex是否匹配这个文件的名字。通常使用accept(),list()方法会返回一个数组。

代码实例2:

package Java_IO;

import java.io.File;
import java.util.Arrays;

/**
 * Created by LKL on 2017/2/27.
 */
public class DirList {
    public static void main(String[] args){
        File path = new File(".");
        String[] list;
        if (args.length==0){
            list=path.list();
        }else{
            list=path.list(new FilenameFilter(){
            private Pattern pattern = Pattern.compile(args[0]);
            public boolean accept(File dir,String name){
            return pattern.matcher(name).matches();
            }
            });
        }
        //按字母排序
        Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
        for(String dirItem : list){
            System.out.println(dirItem);
        }
    }
}

运行上述代码结果如下:

.idea
out
program.iml
src

文章只是作为自己的学习笔记,借鉴了网上的许多案例,如果觉得阔以的话,希望多交流,在此谢过…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值