1. File类的理解

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

2. File的实例化

2.1 常用构造器

File(String filePath) File(String parentPath,String childPath) File(File parentFile,String childPath)

  1. @Test
  2. public void test1() {
  3. // 构造器 1
  4. // 相对路径
  5. File file = new File("hello.txt");
  6. // 绝对路径
  7. File file1 = new File("D:\\workspace_idea\\TestCode\\JavaSE\\hi.txt");
  8. System.out.println(file);
  9. System.out.println(file1);
  10. // 构造器 2
  11. File file2 = new File("D:\\workspace_idea\\TestCode", "JavaSE");
  12. System.out.println(file2);
  13. // 构造器 3
  14. File file3 = new File(file2, "hi.txt");
  15. System.out.println(file3);
  16. }

2.2 路径的分类

相对路径:相较于某个路径下,指明的路径。 绝对路径:包含盘符在内的文件或文件目录的路径

说明:

IDEA中: 如果开发使用JUnit中的单元测试方法测试,相对路径即为当前Module下。 如果使用main()测试,相对路径即为当前的Project下。

Eclipse中: 不管使用单元测试方法还是使用main()测试,相对路径都是当前的Project下。

2.3 路径分隔符

windows和DOS系统默认使用“\”来表示 UNIX和URL使用“/”来表示

3. File类的常用方法

image.png


    @Test
    public void test2() {

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

        System.out.println(file1.getAbsolutePath()); // 获取绝对路径
        System.out.println(file1.getPath()); // 获取路径
        System.out.println(file1.getName()); // 获取名称
        System.out.println(file1.getParent()); // 获取上层文件目录路径。若无,返回null
        System.out.println(file1.length()); // 获取文件长度(即:字节数)。不能获取目录的长度
        System.out.println(new Date(file1.lastModified())); // 获取最后一次的修改时间,毫秒值

        System.out.println();

        System.out.println(file2.getAbsolutePath());
        System.out.println(file2.getPath());
        System.out.println(file2.getName());
        System.out.println(file2.getParent());
        System.out.println(file2.length());
        System.out.println(file2.lastModified());
    }

    @Test
    public void test3() {

        File file = new File("D:\\workspace_idea\\TestCode\\JavaSE");
        String[] strings = file.list();
        for (String s : strings) {
            System.out.println(s);
        }

        System.out.println();

        File[] listFiles = file.listFiles();
        for (File f : listFiles) {
            System.out.println(f);
        }
    }

    @Test
    public void test4() {

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

        System.out.println(file1.renameTo(file2));
    }

image.png

    @Test
    public void test5() {

        File file1 = new File("hello.txt");

        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.canWrite());
        System.out.println(file1.isHidden());

        System.out.println();

        File file2 = new File("d:\\io");
        file2 = new File("d:\\io1");
        System.out.println(file2.isDirectory());
        System.out.println(file2.isFile());
        System.out.println(file2.exists());
        System.out.println(file2.canRead());
        System.out.println(file2.canWrite());
        System.out.println(file2.isHidden());
    }

image.png

    /*
        创建硬盘中对应的文件或文件目录
        public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
        public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
        public boolean mkdirs() :创建文件目录。如果此文件目录存在,就不创建了。如果上层文件目录不存在,一并创建

        删除磁盘中的文件或文件目录
        public boolean delete():删除文件或者文件夹
        删除注意事项:Java中的删除不走回收站。
     */
    @Test
    public void test6() throws IOException {

        File file = new File("hello.txt");
        if (!file.exists()) {
            file.createNewFile();
            System.out.println("创建成功!");
        } else {
            file.delete();
            System.out.println("删除成功");
        }
    }

    // 文件目录的创建
    @Test
    public void test7() {

        File file = new File("D:\\io\\io1");
        if (file.mkdir()) {
            System.out.println("创建成功");
        }

        File file1 = new File("D:\\io\\io2");
        if (file1.mkdirs()) {
            System.out.println("创建成功2");
        }

        // 要想删除成功,io4文件目录下不能有子目录或文件
        File file2 = new File("D:\\io\\io2");
        System.out.println(file2.delete());
    }