Java:File类

2023-12-29 16:03:47

File类创建对象

package com.itheima.day12.file;

import java.io.File;
import java.io.IOException;

public class FileDemo1 {
    /*
        File类介绍 : 文件或文件夹对象

        构造方法 :
            1. public File (String pathname) : 根据传入的字符串路径封装File对象
            2. public File (String parent, String child) : 根据传入的父级路径和子级路径来封装File对象
            3. public File (File  parent, String child) : 根据传入的父级路径(File类型)和子级路径来封装File对象

     */
    public static void main(String[] args) throws IOException {
        File f1 = new File("D:\\A.txt"); //将对象与文件(夹)关联在一起
        f1.createNewFile(); //若该目录下没有A.txt文件,则创建A.txt文件

        File f2 = new File("D:\\test");
        //exists方法,判断有无该文件
        System.out.println(f2.exists()); //trueS
A
        File f3 = new File("D:\\", "test");
        System.out.println(f3.exists()); //true

        File f4 = new File(new File("D:\\"), "test");
        System.out.println(f4.exists()); //true
    }
}

File类的常用方法

注意:

public long length() : 返回文件的大小(字节数量)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * 文件对象操作, 返回正确的字节个数

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * 文件夹对象操作, 返回的是错误的字节个数

package com.itheima.day12.file;

import java.io.File;
import java.util.Date;

public class FileMethodDemo3 {
    /*
        File类常见方法 :

            1. 判断相关
                    public boolean isDirectory() : 判断是否是文件夹
                    public boolean isFile() : 判断是否是文件
                    public boolean exists() : 判断是否存在

            2. 获取相关
                    public long length() : 返回文件的大小(字节数量)
                                                * 文件对象操作, 返回正确的字节个数
                                                * 文件夹对象操作, 返回的是错误的字节个数

                    public String getAbsolutePath() : 返回文件的绝对路径
                    public String getPath() : 返回定义文件时使用的路径
                    public String getName() : 返回文件的名称,带后缀
                    public long lastModified() : 返回文件的最后修改时间(时间毫秒值)

     */
    public static void main(String[] args) {
        File f1 = new File("D:\\A.txt");
        System.out.println(f1.isDirectory());       // false
        System.out.println(f1.isFile());            // true
        System.out.println(f1.exists());            // true

        System.out.println("----------------------");

        File f2 = new File("D:\\test");

        System.out.println(f1.length());
        System.out.println(f2.length());

        System.out.println("----------------------");

        File f3 = new File("A.txt");
        System.out.println(f3.getAbsolutePath());

        System.out.println("----------------------");

        System.out.println(f1.getName());
        System.out.println(f2.getName());
        System.out.println(f3.getName());

        System.out.println("----------------------");

        long time = f1.lastModified();
        System.out.println(new Date(time));
    }
}

?File类的创建和删除方法

package com.itheima.day12.file;

import java.io.File;
import java.io.IOException;

public class FileMethodDemo4 {
    /*
        File类的创建方法和删除方法 :

            public boolean createNewFile() :创建文件
            public boolean mkdir() : 创建单级文件夹
            public boolean mkdirs() : 创建多级文件夹
            public boolean delete() : 删除文件或文件夹
                            - delete 方法删除文件夹, 只能删除空的文件夹.
     */
    public static void main(String[] args) throws IOException {
        File f1 = new File("src\\com\\itheima\\day12\\B.txt");
        System.out.println(f1.createNewFile());

        File f2 = new File("src\\com\\itheima\\day12\\aaa");
        System.out.println(f2.mkdirs());

        File f3 = new File("src\\com\\itheima\\day12\\C.txt");
        System.out.println(f3.mkdirs());

        System.out.println(f1.delete());
        System.out.println(f2.delete());
    }
}

File类的遍历方法

?

注意事项

案例:显示一个文件夹下的所有.java类型的文件

首先咱们写一个键盘录入文件路径的方法,代码如下

package com.itheima.day12.file;

import java.io.File;
import java.util.Scanner;

public class FileTest1 {
    /*
        需求: 键盘录入一个文件夹路径,如果输入错误就给出提示,并继续录入,直到正确为止
     */
    public static void main(String[] args) {

        File dir = getDir();
        System.out.println(dir);

    }

    public static File getDir() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入文件夹路径: ");
        while (true) {
            String path = sc.nextLine();

            File dir = new File(path);

            if (!dir.exists()) {
                System.out.println("您输入的文件夹路径不存在, 请重新输入: ");
            } else if (dir.isFile()) {
                System.out.println("您输入的是一个文件路径, 请重新输入一个文件夹路径: ");
            } else {
                return dir;
            }
        }
    }
}

?接着咱们写完整逻辑

package com.itheima.day12.file;

import java.io.File;

public class FileTest2 {
    /*
        需求: 键盘录入一个文件夹路径,找出这个文件夹下所有的 .java 文件
     */
    public static void main(String[] args) {
        //FileTest1.getDir()是一个自定义的工具类中的方法,作用是:键盘录入一个文件夹路径
        File dir = FileTest1.getDir();

        printJavaFile(dir);
    }

    /**
     * 对接收到的文件夹路径进行遍历, 找出所有的.java文件
     */
    public static void printJavaFile(File dir) {
        // 1. 获取当前路径下所有的文件和文件夹对象
        File[] files = dir.listFiles();

        // 2. 对数组遍历, 获取每一个文件或文件夹对象
        for (File file : files) {
            // 3. 判断是否是.java文件
            if (file.isFile()) {
                if (file.getName().endsWith(".java")) {
                    System.out.println(file);
                }
            } else {
                // 4. 代码执行到这里, 说明是文件夹
                // 思路: 调用方法, 进入这个文件夹继续找.java文件
                if (file.listFiles() != null) {
                    printJavaFile(file);
                }
            }
        }
    }


    private static void method(File dir) {
        // 获取当前路径下所有的文件和文件夹对象
        File[] files = dir.listFiles();
        // 遍历数组, 获取每一个文件或文件夹对象
        for (File file : files) {
            // 判断是否是文件, 并且文件的后缀名需要.java结尾
            if (file.isFile() && file.getName().endsWith(".java")) {
                System.out.println(file);
            }
        }
    }
}

关于文件夹的操作常用到递归,因为文件夹里不仅有文件,还可能有文件夹

文章来源:https://blog.csdn.net/lbcbjtlhmjq/article/details/135286993
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。