java File类

File对象可以操作文件与目录,创建File对象并不一定是创建了新的文件或目录,而是表示某文件或目录。

File file = new File("data.txt");  以当前目录下data.txt文件,创建一个File对象。但当前目录下并不一定存在data.txt文件。

System.out.println(file.exists()); 输出结果为false,当前目录下不存在data.txt文件。

File的createNewFile()函数可以创建data.txt文件

file.createNewFile();
System.out.println(file.exists());       输出结果为true

 

File类的示例如下:

import java.io.*;

public class FileTest {

    public static void main(String[] args) throws IOException{

        // 以当前目录创建一个File对象,file表示当前目录
        File file = new File(".");
        // 输出file表示的文件或目录名
        System.out.println(file.getName());   // .
        // 判断file表示的是否为文件
        System.out.println(file.isFile());    // false
        // 判断file表示的是否为目录
        System.out.println(file.isDirectory()); // true
        // file表示的文件或目录的绝对路径
        System.out.println(file.getAbsoluteFile()); // D:\java\.
        // 判断file表示的文件或目录是否存在
        System.out.println(file.exists());          // true

        // 返回file表示的目录下的所有文件或目录
        String[] list = file.list();
        for (String str:list) {
            System.out.println(str);
        }


    }
}

 

 

File的list()方法可以接收一个FilenameFilter类参数,通过该参数可以得到只符合条件的文件或目录。

FilenameFilter是一个接口,通过实现其包含的accept(File dir, String name)方法,来筛选指定目录下符合条件的文件或目录。

accept(File dir, String name)   dir表示指定目录,name表示指定目录下的文件名或目录名,通过对name的操作来筛选指定目录下符合条件的文件或目录。

 

例1.如得到file表示目录下的.java文件,代码如下:

import java.io.*;

public class FileTest {

    public static void main(String[] args) throws IOException{

        // 以当前目录创建一个File对象,file表示当前目录
        File file = new File(".");

        String[] list = file.list(new MyFilter());
        for (String str:list) {
            System.out.println(str);
        }
    }
}


class MyFilter implements FilenameFilter {

    // 实现accept方法,若name以.java结尾返回true
    public boolean accept(File dir, String name) {

        return name.endsWith(".java");
    }    
}

 

也可以使用匿名类来实现

import java.io.*;

public class FileTest {

    public static void main(String[] args) throws IOException{

        // 以当前目录创建一个File对象,file表示当前目录
        File file = new File(".");


        String[] list = file.list(new FilenameFilter() {

            public boolean accept(File dir, String name) {
                return name.endsWith(".java");
            }
        }
                );
        for (String str:list) {
            System.out.println(str);
        }
    }
}

也可以使用Lambda表达式来实现

String[] list = file.list((dir, name) -> name.endsWith(".java"));

 

例2.  得到file表示目录下的.java文件及目录

import java.io.*;

public class FileTest {

    public static void main(String[] args) throws IOException{

        // 以当前目录创建一个File对象,file表示当前目录
        File file = new File(".");


        String[] list = file.list(new FilenameFilter() {

            public boolean accept(File dir, String name) {
                return name.endsWith(".java") || new File(name).isDirectory();
            }
        }
                );
        for (String str:list) {
            System.out.println(str);
        }


    }
}

 

posted on 2018-02-01 10:57  Deltadeblog  阅读(129)  评论(0编辑  收藏  举报

导航