目录

  • File类的使用
  • 1.1 创建File类实例的三种方法
  • 1.2 File类的常用方法
  • 1.2.1 File类的获取功能
  • 1.2.2 File类的重命名功能
  • 1.2.3 File类的判断功能
  • 1.2.4 File类的创建和删除功能


File类的使用

  • java.io.File:文件或文件目录路径的抽象表示形式,与平台无关
  • File类的一个对象,代表一个文件或一个文件目录(文件夹)
  • File类声明在java.io这个包下
  • File类中涉及到关于文件、文件目录的创建,删除、重命名、修改时间、文件大小等方法
  • 并未涉及到文件的修改写入或读取文件内容的操作。如果需要读取或写入文件内容,就必须使用IO流来完成。
  • 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”

1.1 创建File类实例的三种方法

@Test
    public void test(){

        //File(String filePath)
        File file1 = new File("Hello.txt");//相对于module
        File file2 = new File("D:\\IdeaProjects\\JavaSenior\\guigu20210911\\he.txt");//绝对路径

        //File(String parentPath,String childPath)
        File file3 = new File("D:\\IdeaProjects","JavaSenior");

        //File(File file,String childPath)
        File file4 = new File(file3,"hi.txt");

    }

1.2 File类的常用方法

1.2.1 File类的获取功能

File file1 = new File("hello.txt");
        File file2 = new File("d:\\io\\hi.txt");


        //public String getAbsolutePath():获取绝对路径
        System.out.println(file1.getAbsolutePath());
        System.out.println(file2.getAbsolutePath());
        System.out.println("-----------");

        //public String getPath:获取路径
        System.out.println(file1.getPath());
        System.out.println(file2.getPath());
        System.out.println("-----------");

        //public String getName():获取名称
        System.out.println(file1.getName());
        System.out.println(file2.getName());
        System.out.println("-----------");

        //public String getParent():获取上层目录路径。若无,返回null
        System.out.println(file1.getParent());
        System.out.println(file2.getParent());
        System.out.println("-----------");

        //public long length():获取文件长度(即:字节数)。不能获取目录的长度
        System.out.println(file1.length());
        System.out.println(file2.length());
        System.out.println("-----------");

        //public long lastModified(): 获取最后一次修改时间,毫秒值
        System.out.println(new Date(file1.lastModified()));
        System.out.println(new Date (file2.lastModified()));
        System.out.println("-----------");

输出:

D:\IdeaProjects\JavaSenior\guigu20210911\hello.txt
d:\io\hi.txt
-----------
hello.txt
d:\io\hi.txt
-----------
hello.txt
hi.txt
-----------
null
d:\io
-----------
6
0
-----------
Sat Sep 11 18:06:48 CST 2021
Thu Jan 01 08:00:00 CST 1970
-----------

如下两种方法适用于文件目录

@Test
    public void test2(){

        File file1 = new File("D:\\IdeaProjects\\JavaSenior");

        //public String[] list():获取指定目录下的所有文件或者文件目录的名称数组,
        String list[] = file1.list();
        for(String s : list){
            System.out.println(s);
        }

        System.out.println("---------------------------------");
        //public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
        File file[] = file1.listFiles();
        for(File f : file){
            System.out.println(f);
        }
    }

输出:

.idea
guigu20210828
guigu20210829
guigu20210830
guigu20210831
guigu20210905
guigu20210910
guigu20210911
JavaSenior.iml
jdbc.properties
out
practiceSet
shangguigu_Project03
src
---------------------------------
D:\IdeaProjects\JavaSenior\.idea
D:\IdeaProjects\JavaSenior\guigu20210828
D:\IdeaProjects\JavaSenior\guigu20210829
D:\IdeaProjects\JavaSenior\guigu20210830
D:\IdeaProjects\JavaSenior\guigu20210831
D:\IdeaProjects\JavaSenior\guigu20210905
D:\IdeaProjects\JavaSenior\guigu20210910
D:\IdeaProjects\JavaSenior\guigu20210911
D:\IdeaProjects\JavaSenior\JavaSenior.iml
D:\IdeaProjects\JavaSenior\jdbc.properties
D:\IdeaProjects\JavaSenior\out
D:\IdeaProjects\JavaSenior\practiceSet
D:\IdeaProjects\JavaSenior\shangguigu_Project03
D:\IdeaProjects\JavaSenior\src

1.2.2 File类的重命名功能

@Test
    public void test3(){

        File file1 = new File("hi.txt");
        File file2 = new File("D:\\IdeaProjects\\JavaSenior\\guigu20210911\\hello.txt");
        File file3 = new File("D:\\IdeaProjects\\JavaSenior");

        System.out.println(file1.renameTo(file2));//要想返回true,需要file1在硬盘中是存在的,且file2不能存在
        System.out.println(file2.renameTo(file3));
    }

输出:

true
false

1.2.3 File类的判断功能

@Test
    public void test4(){

        File file1 = new File("hello.txt");
        File file2 = new File("D:\\IdeaProjects\\JavaSenior");
        //public boolean isDirectory():判断是否是文件目录——常用
        System.out.println(file1.isDirectory());
        System.out.println(file2.isDirectory());
        System.out.println("+++++++++++++++++++");

        //public boolean idFile():判断是否是文件——常用
        System.out.println(file1.isFile());
        System.out.println(file2.isFile());
        System.out.println("+++++++++++++++++++");

        //public boolean canRead():判断是否可读——常用
        System.out.println(file1.canRead());
        System.out.println("+++++++++++++++++++");

        //public boolean canWrite():判断是否可写
        System.out.println(file1.canWrite());
        System.out.println("+++++++++++++++++++");

        //public boolean isHidden():判断是否隐藏
        System.out.println(file1.isHidden());
    }

输出:

false
true
+++++++++++++++++++
true
false
+++++++++++++++++++
true
+++++++++++++++++++
true
+++++++++++++++++++
false

1.2.4 File类的创建和删除功能

@Test
    public void test5() throws IOException {

        File file1 = new File("hi.txt");
        //创建文件,文件存在则不创建,返回false
        if(!file1.exists()){
            file1.createNewFile();
            System.out.println("文件创建成功!");
        }else {
            //文件已存在
            file1.delete();
            System.out.println("文件已删除!");
        }


        //mkdir:创建文件目录。存在不创建,返回false。若此文件目录的上层目录不存在也不创建
        File file2 = new File("D:\\IdeaProjects\\JavaSenior\\guigu20210911\\dir1\\dir2\\dir4");
        boolean mkdir = file2.mkdir();
        if(mkdir){
            System.out.println("文件目录创建成功!");
        }else {
            boolean dlt = file2.delete();
            if (dlt){
                System.out.println("文件目录已删除!");
            }else {
                System.out.println("文件上层目录不存在!");
            }

        }

        //mkdirs:创建文件目录。存在则不创建,返回false。如果上层文件目录不存在,一并创建
        File file3 = new File("D:\\IdeaProjects\\JavaSenior\\guigu20210911\\dir1\\dir2\\dir3");
        boolean mkdirs = file3.mkdirs();
        if(mkdirs){
            System.out.println("文件目录创建成功!");
        }else {
            file2.delete();
            System.out.println("文件目录已删除!");
        }
    }