← 返回首页
JavaSE系列教程(六十九)
发表时间:2020-02-17 16:32:55
讲解Java的File类。

Java中把文件和目录统称为文件,File类主要实现了文件和目录的创建、文件的查找和文件的删除等操作。

1.如何创建文件

        File f =new File("d:"+File.separator+"haha.txt");

        //判断这个文件存在否,如果不存在,创建出来。
        if(!f.exists()){
            try {
                f.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

File.separator表示目录的分隔符号,不同的操作系统表示方式不同。比如:在windows平台下使用'\'表示目录分隔符,而在linux平台下使用'/'表示目录的分隔符。

2.如何创建目录

 File dir = new File("d:"+File.separator+"test"+File.separator+"haha");
 //判断一下这个目录存在否,如果不存在,创建出来。
 if(!dir.exists()){
    dir.mkdirs(); //创建目录
 }

mkdir():只可以创建一级的文件夹,要求父目录必须存在。 mkdirs():可用于创建多级目录。即便父目录不存在也可以创建成功。

3.获取文件的属性

        File logoFile = new File("d:"+ File.separator+"java_logo.jpg");

        if(logoFile.exists()){
            //获得图片文件的长度(单位:字节)
            System.out.println("文件大小:"+logoFile.length());
            //获得文件名
            System.out.println("文件名:"+logoFile.getName());
            //获得文件的绝对路径文件名
            System.out.println("绝对路径文件名:"+logoFile.getAbsoluteFile()); 
            //获得绝对路径
            System.out.println("绝对路径是:"+logoFile.getAbsolutePath());
            //获取父目录
            System.out.println("父目录是:"+logoFile.getParent());
            System.out.println("是否可读:"+logoFile.canRead());
            System.out.println("是否可写:"+logoFile.canWrite());
            System.out.println("是否可执行:"+logoFile.canExecute());

            System.out.println("是否是目录:" + logoFile.isDirectory());
            System.out.println("是否是文件:"+logoFile.isFile());

        }

4.如何删除文件和目录

        File logoFile = new File("d:"+ File.separator+"java_logo.jpg");
        File dir = new File("d:"+File.separator+"test");

        if(logoFile.exists()){
            logoFile.delete();
        }
        if(dir.exists()){
            dir.delete();
        }

5.如何遍历目录

通过递归实现遍历某个目录下的所有文件和子文件夹,实现类似资源管理器的展开效果。

public class FileDemo4 {

    public static void dir(File directory, String prefix){

        if(directory.isDirectory()){
            //开始遍历该目录下的所有文件
            File[] files = directory.listFiles();
            for(File f: files){
                System.out.println(prefix+f.getName());
                if(f.isDirectory()){
                    //如果是目录进行递归。
                    dir(f,prefix+"-");
                }
            }
        }

    }

    public static void main(String[] args) {
        File dest = new File("e:"+File.separator+"java_lesson");
        dir(dest,"");
    }
}

6.如何实现文件过滤

通过递归实现遍历某个目录下的所有文件和子文件夹并且使用文件过滤器过滤出所有的java源程序文件。

public class FileDemo4 {

    public static void dir(File directory, String prefix){

        if(directory.isDirectory()){
            //开始遍历该目录下的所有文件
            File[] files = directory.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    String name = pathname.getName();
                    return name.endsWith(".java")|| pathname.isDirectory();// 后缀为.java的文件
                }
            });
            for(File f: files){
                System.out.println(prefix+f.getName());
                if(f.isDirectory()){
                    //如果是目录进行递归。
                    dir(f,prefix+"-");
                }
            }
        }

    }

    public static void main(String[] args) {
        File dest = new File("e:"+File.separator+"java_lesson");
        dir(dest,"");
    }
}