Java:File类

File类的概述

  • 文件和目录路径名的抽象表示形式
  • 表示的文件/目录不一定存在

构造方法

  • File(File parent, String child)
    从父抽象路径名和子路径名字符串创建新的 File实例
  • File(String pathname)
    通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
  • File(String parent, String child)
    从父路径名字符串和子路径名字符串创建新的 File实例
  • File(URI uri)
    通过将给定的 file: URI转换为抽象路径名来创建新的 File实例
File file = new File("D:/file/newfile");
File file = new File("D:/file","newfile");
File fileParent = new File("D:/file");  File file = new File(fileParent,"newfile");
//以上三种定义的file指向同样的路径

私以为这个类是英语影响Java学习速度的典型代表

创建
public boolean createNewFile()//创建文件 文件已存在就不会被创建 父级目录必须存在
public boolean mkdir()//创建目录  目录已存在就不会被创建 父级目录必须存在
public boolean mkdirs()//创建目录 父级目录不存在则创建
删除
public boolean delete()//删除文件/目录   目录必须为空
移动&重命名
//可改变文件路径及名称
public boolean renameTo(File dest)//将文件移动到目标路径,更改为目标名称

判断功能

public boolean isDirectory()//是否为目录
public boolean isFile()//是否为文件
public boolean exists()//是否可执行
public boolean canRead()//是否可读
public boolean canWrite()//是否可写
public boolean isHidden()//是否可见

基本获取功能

public String getAbsolutePath()//得到绝对路径
public String getPath()//得到对象中存储的路径
public String getName()//返回文件(目录)名
public long length()//返回文件字节数
public long lastModified()//返回此抽象路径名表示的文件上次修改的时间(毫秒值)  配合new Date()使用

public String[] list()//返回目录下的文件和目录的名称数组  若该File指向一个文件则返回null
public File[] listFiles()//返回目录下的文件和目录的File数组  若该File指向一个文件则返回null


public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)


FilenameFilter接口      用于筛选获取目录下的一部分文件

//示例

//FilenameFilter
String [] files = file.list(new FilenameFilter(){
    @override
    public boolean accpet(File dir , String name){//dir为调用者file,name为文件名
        return name.endsWith(.txt);
        //return new File(dir,name).isFile && name.endsWith(.txt);确保是文件
    }
});//返回file目录下的TXT文件名称数组


private File [] getFiles(File file){
        File [] files = null;
        if(file.isFile())return files;
        if(file.isDirectory()){
            files = file.listFiles((File dir, String name)->new File(dir,name).isDirectory()&&name.endsWith(".jpg"));
        }
        return files;
    }//返回目录file下以.jpg为结尾的文件夹File数组

//FileFilter    仅listFiles可用

private File [] gotFiles(File file){
        File [] files = null;
        if(file.isFile())return files;
        if(file.isDirectory()){
            files = file.listFiles((pathname)->pathname.isDirectory()&&pathname.getName().endsWith(".jpg"));//pathname为指向file目录下文件的File类型变量
        }
        return files;
    }//返回目录file下以.jpg为结尾的文件夹File数组

简单应用:递归删除文件/目录下的所有文件

import java.io.File;

public class Main {

    private static void delete(File file){
        File [] files;
        if(file.isFile()){
            if(file.delete())
                System.out.println(file.getAbsolutePath());
        }else if(file.isDirectory()){
            files = file.listFiles();
            for(File f : files){
                delete(f);
            }
            if(file.delete())
                System.out.println(file.getAbsolutePath());
        }
    }

    public static void main(String[] args) {
            delete(new File("D:\\tem"));//文件/目录名
    }
}

2018/8/4

posted @ 2018-08-04 10:03  kafm  阅读(68)  评论(0编辑  收藏  举报