面向对象——File类

一、File类的概述和构造方法

File:它是文件和目录路径名的抽象表示:

  • 文件和目录可以通过File封装成对象;

  • File封装的对象仅仅是一个路径名。它可以是存在的,也可以是不存在的;

方法名

说明

File(String pathname)

通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例

File(String parent, String child)

从父路径名字符串和子路径名字符串创建新的 File实例

File(File parent, String child)

从父抽象路径名和子路径名字符串创建新的 File实例

File file = new File("gkl");
File fileChild = new File("child");

二、绝对路径和相对路径

  1. 绝对路径:从盘符开始;

  1. 相对路径:相对当前项目下的路径;

三、Flie类的创建

方法名

说明

public boolean createNewFile()

创建一个新的空的文件

public boolean mkdir()

创建一个单级文件夹

public boolean mkdirs()

创建一个多级文件夹

File file = new File("gkl");
File fileChild = new File("child");
//创建文件目录单级文件夹
boolean isSuccess = file.mkdir();
System.out.println(isSuccess);
file.createNewFile();
//创建子目录多级文件夹
boolean isSuccessChild = fileChild.mkdirs();
System.out.println(isSuccessChild);

四、File类删除功能

方法名

说明

public boolean delete()

删除由此抽象路径名表示的文件或目录删除由此抽象路径名表示的文件或目录

删除目录时的注意事项:

  • delete方法直接删除不走回收站

  • 如果删除的是一个文件,直接删除

  • 如果删除的是一个文件夹,需要先删除文件夹中的内容,最后才能删除文件夹

package com.gkl.service;

import java.io.File;

public class FileDemo {

    public void delete(File file) {
        File[] files = file.listFiles();
        for (File child : files) {
            if (child.isDirectory()) {
                System.out.println(child.getAbsolutePath());
                //迭代找子目录
                delete(child);
            } else {
                //删除文件
                child.delete();
            }
        }
        //再删除目录
        file.delete();
    }
    public static void main(String[] args) {
       
        FileDemo fileDemo = new FileDemo();
        //通过递归迭代删除目录,gkl-2文件夹必须自己创建
        fileDemo.delete(new File("D:\\gkl - 2"));
    }
}

五、File类判断和获取功能

方法名

说明

public boolean isDirectory()

测试此抽象路径名表示的File是否为目录

public boolean isFile()

测试此抽象路径名表示的File是否为文件

public boolean exists()

测试此抽象路径名表示的File是否存在

public String getAbsolutePath()

返回此抽象路径名的绝对路径名字符串

public String getPath()

将此抽象路径名转换为路径名字符串

public String getName()

返回由此抽象路径名表示的文件或目录的名称

六、File类高级获取功能

方法名

说明

public File[] listFiles()

返回此抽象路径名表示的目录中的文件和目录的File对象数组

listFiles方法注意事项:

  • 当调用者不存在时,返回null

  • 当调用者是一个文件时,返回null

  • 当调用者是一个空文件夹时,返回一个长度为0的数组

  • 当调用者是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回

  • 当调用者是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏内容

  • 当调用者是一个需要权限才能进入的文件夹时,返回null

统计文件夹中的各类文件的数目

package com.gkl.service;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class FileDemo {

    Map<String, Integer> map = new HashMap<>();

    public void censusEndFile(File file, String text) {
//        File file = new File("D:\\gkl");
        File[] files = file.listFiles();
        for (File child : files) {
            if (child.isDirectory()) {
                //统计子目录
                censusEndFile(child,text);
            } else {
                String fileName = child.getName();
                if (fileName.endsWith(text)) {
                    //统计文件数
                    int num = 1;
                    if (map.containsKey(text)) {
                        num = map.get(text);
                        num += 1;
                    }
                    map.put(text, num);
                }
            }
        }
    }

    public static void main(String[] args) {
        
        FileDemo fileDemo = new FileDemo();
        fileDemo.censusEndFile(new File("D:\\gkl"), "txt");
        System.out.println(fileDemo.map);
}

获取磁盘的所有文件:

package com.gkl.service;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FileDemo {

    List<String> list = new ArrayList<>();

    public List searchAllFile(File file) {
        File[] files = file.listFiles();
        if(files!=null){
            for (int i = 0; i < files.length; i++) {
                File child = files[i];
                if (child.isDirectory()){
//                  System.out.println(child.getAbsolutePath());
                    searchAllFile(child);
                }else {
                    //把文件名添加到List集合中
                    list.add(child.getName());
                }
            }
//            for (File child : files) {
//                if (child.isDirectory()) {
//                    System.out.println(child.getAbsolutePath());
//                    searchAllFile(child);
//                } else {
//                    //把文件名添加到List集合中
//                    list.add(child.getName());
//                }
//            }
        }
        return list;
    }

    public static void main(String[] args) throws IOException {
      
        FileDemo fileDemo = new FileDemo();
        System.out.println(file.getName() + ":" + fileDemo.searchAllFile(new File("D:\\")));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值