Java中File文件类详解

File 类

File:
    1.可以操作文件
    2.可以操作文件夹
    3.可以操作文件的路径

File的静态成员变量

获取路径分隔符 static String pathSeparator 
例如:
        String pathseparator = File.pathSeparator;
        System.out.println(pathseparator);
不同平台下获取的路径分隔符不同
    Mac系统下:路径分隔符 : (冒号)
    Windows系统下:路径分隔符 ; (分号)

获取名称分隔符 static String separator 
例如:
        String separator = File.separator;
        System.out.println(separator);
不同平台下获取的名称分隔符不同
    Mac系统下:名称分隔符 /
    Windows系统下:名称分隔符 \

构造方法

构造方法1:File(String pathname)

        // 使用绝对路径
        File file = new File("/Users/lanou/Desktop/Test");
        System.out.println(file);
        // 判断该路径是否存在
        boolean b1 = file.exists();
        System.out.println(b1);

        // 使用相对路径 参照物是当前工程根目录
        File file1 = new File("src/dp.txt");
        // 打印绝对路径
        // /Users/lanou/eclipse-workspace/sh-day-023/src
        System.out.println(file1.getAbsolutePath());

        boolean b2 = file1.exists();
        System.out.println(b2);

绝对路径就是硬盘上的路径并且这个路径是唯一的
相对路径是有参照物的

构造方法2:File(String parent, String child)

        String parent = "/Users/lanou/Desktop";
        String child = "Test";
        File file2 = new File(parent, child);
        boolean b3 = file2.exists();
        System.out.println(b3);

构造方法3:File(File parent, String child)

        File f = new File(parent);
        String child = "Test";
        File file3 = new File(f, child);
        System.out.println(file3.exists());

创建功能

创建文件:public boolean createNewFile()
        // 该方法只能创建文件 不给后缀也是创建文件
        File file = new File("/Users/lanou/Desktop/Test/haha.txt");
        boolean b1 = file.createNewFile();
        System.out.println(b1);
创建文件方法,如果方法已经存在不会重复创建,并返回false

创建文件夹(带不带后缀创建出来的都是文件夹):
    public boolean mkdir()
    public boolean mkdirs()

        File file2 = new File("/Users/lanou/Desktop/Test/x/y/z");
        // mkdir 只能创建一级文件夹
        boolean b3 = file2.mkdir();
        // mkdirs 可以创建多级文件夹
        boolean b3 = file2.mkdirs();
        System.out.println(b3);

删除功能

删除文件:public boolean delete()

        // 如果文件下没有子文件夹可以删除
        File file = new File("/Users/lanou/Desktop/Test/b");
        boolean b1 = file.delete();
        System.out.println(b1);
注意:删除需谨慎不走回收站

判断功能

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

        File file = new File("/Users/lanou/Desktop/Test/b");
        boolean b1 = file.isDirectory();
        boolean b2 = file.isFile();
        boolean b3 = file.exists();
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);

获取功能

获取路径:public String getPath()
        // 获取路径(跟toString方法一样输出路径不管文件存在与否)
        File file = new File("/Users/lanou/Desktop/Test/www.txt");
        String path = file.getPath();
        System.out.println(path);

获取文件名字:public String getName()

        String name = file.getName();
        System.out.println(name);

获取文件长度:public long length()

        // 获取文件占多少字节 英文一个字节 中文三个字节
        long length = file.length();
        System.out.println(length);

获取父级路径:public File getParentFile()

        File parentFile = file.getParentFile();
        System.out.println(parentFile);

File file = new File("/Users/lanou/Desktop/Test");

获取该路径下所有文件及文件夹的名字(一层):public String[] list()

        String[] list = file.list();
        for (String string : list) {
            System.out.println(string);
        }

获取该路径下文件的全路径(一层):public File[] listFiles()

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

遍历打印Test文件夹下所有文件:

    public static void fun(File file) {
        // 获取文件路径
        File[] listFiles = file.listFiles();
        for (File file2 : listFiles) {
            if (file2.isDirectory()) {
                // 继续调用
                fun8(file2);
            } else {
                System.out.println(file2.getName());
            }
        }
    }

    public static void main(String[] args) throws IOException {
        File file = new File("/Users/lanou/Desktop/Test");
        fun(file);
    }

文件类功能练习

从控制台输入一个字符串 该字符串是文件夹路径
1.计算这个文件夹的大小
2.删除这个文件夹

    // 输入路径 判断是否是文件夹路径 是就返回 不是就重新输入
    public static File getDir() {
        Scanner scanner = new Scanner(System.in);
        // 是就返回 不是就重写输入
        while (true) {
            System.out.println("请输入一个文件夹的路径");
            String path = scanner.nextLine();
            // 利用输入的路径 创建文件对象
            File file = new File(path);
            // 进行判断
            if (!file.exists()) {
                System.out.println("你输入的路径不存在 重新输入");
            } else if (file.isFile()) {
                System.out.println("你输入的是个文件 重新输入");
            } else {
                return file;
            }
        }
    }

    // 计算文件夹大小
    public static long getDirLengthFile(File file) {
        // 定义一个变量
        long length = 0;
        // 遍历文件夹
        File[] listFiles = file.listFiles();
        for (File subFile : listFiles) {
            if (subFile.isFile()) {
                length += subFile.length();
            } else {
                length += getDirLengthFile(subFile);
            }
        }
        return length;
    }

    // 删除文件夹
    public static void deleteDir(File file) {
        File[] listFiles = file.listFiles();
        for (File subFile : listFiles) {
            // 是文件
            if (subFile.isFile()) {
                subFile.delete();
            } else {
                deleteDir(subFile);
            }
        }
        // 传进来的文件夹已经空了 可以直接删除
        file.delete();
    }

    public static void main(String[] args) {
        // 测试删除
        File file = getDir();
        deleteDir(file);
        // 测试大小
        File dir = getDir();
        long length = getDirLengthFile(dir);
        System.out.println(length);
    }

你可能感兴趣的:(Java中File文件类详解)