我们要想实现IO的操作,就必须知道硬盘上的文件表现形式
java中用一个类来供我们使用,抽象的表示硬盘上的各种文件
这个叫做File.
File: 文件和目录路径名的抽象表示。今后我所说的目录就代表文件夹的意思。
File类的构造方法:

File(File parent, String child)
         从父抽象路径名和子路径名字符串创建新的 File实例。
     File(String pathname)
         通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
     File(String parent, String child)
         从父路径名字符串和子路径名字符串创建新的 File实例。

创建File对象的原因:
对想要进行操作的文件或者文件夹,将其封装成一个File对象,
然后调用该对象中的方法对文件或者文件夹进行操作

创建功能

public boolean createNewFile()
在指定目录创建一个文件
    public boolean mkdir()
在指定目录下创建文件夹 ,如果该文件夹已经存在,就不会创建了,返回false
    public boolean mkdirs()
在指定目录创建多级文件夹
注意:同一个目录下,文件和文件夹的名字不能重复

删除功能:

public boolean delete()
删除指定目录的文件或文件夹(里面必须为空)
重命名功能
    public boolean renameTo(File dest)
将指定的文件改名为想改的名字

判断功能

public boolean   ()
判断是否是一个目录
    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()
获取文件最后更改的时间,返回的是时间戳,精确到了毫秒

/时间戳与日期的转换

File file2 = new File("")
//public Date(long date)
Date date = new Date(file2.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(date);
System.out.println(s);

高级获取功能

public String[] list()
获取指定目录下的所有文件或者文件夹的名称,组成一个数组
    public File[] listFiles()
获取指定目录下的所有文件或者文件夹组成的File数组

文件名称过滤器的实现思想及代码
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
在获取文件的同时,结果就已经满足了我们要查找的条件
判断E:\数加科技\十四期下面有没有后缀名为.jpg的文件,如果有,就输出此文件的名称
1、先获取该目录下所有的文件和文件夹,然后一个一个遍历判断
2、直接在获取的时候,返回的结果就是满足条件的

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.regex.Pattern;
public class FileDemo9 {
    public static void main(String[] args) {
        File file = new File("D:\\File");
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
//                return false;
//                return true;
            //通过测试发现,该目录下的文件或者文件夹到底该不该加入到数组中
                //取决于这里的返回值是true还是false
                //dir父级目录
                //name目录下文件的名称
                File file1 = new File(dir, name);
                boolean b1 = file1.isFile();
                boolean b2 = file1.getName().endsWith(".jpg");
                return b1 && b2;
            }
        });
        if(files!=null){
            for(File f : files){
                System.out.println(f);
            }
        }
    }
}