Java中 File的相关操作

本文介绍了Java中的File类,包括其构造方法和常用方法,如创建新文件、删除文件夹及其内容、统计文件夹中不同类型的文件数量。通过示例代码展示了如何在指定目录下创建a.txt文件、删除多级文件夹以及统计文件夹中每种文件的数量。
摘要由CSDN通过智能技术生成

File

File类介绍

  • 它是文件和目录路径名的抽象表示
  • 可以将文件和目录的路径名封装为File类的对象

File类的构造方法

方法名说明
File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
File(String parent, String child)从父路径名字符串和子路径名字符串创建新的File实例
File(File parent, String child)从父路径名封装成的File对象和子路径名字符串创建新的File实例

常用方法

方法名说明
public boolean delete()删除由此File对象表示的文件或目录
public boolean isDirectory()测试此File对象表示的File是否为目录
public boolean isFile()测试此File对象表示的File是否为文件
public boolean exists()测试此File对象表示的File是否存在
public String getAbsolutePath()返回此File对象的绝对路径名字符串
public String getPath()将此File对象转换为路径名字符串
public String getName()返回由此File对象表示的文件或目录的名称
public File[] listFiles()返回此File对象表示的目录中的文件和目录的File对象数组

示例

在当前模块下的aaa文件夹中创建一个a.txt文件

package eicoma.com.github.file.practice;

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

/**
 * 案例需求
 *
 * 在当前模块下的aaa文件夹中创建一个a.txt文件
 */

public class FileDemo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("file-practice\\aaa");
        if(!file.exists()){
            file.mkdirs();
        }

        File newFile = new File(file,"a.txt");
        newFile.createNewFile();
    }
}

删除一个多级文件夹

import java.io.File;

/**
 * 案例需求
 *
 * 删除一个多级文件夹
 */

public class FileDemo2 {
    public static void main(String[] args) {

        File fileOrigin = new File("C:\\Users\\32808\\Desktop\\src");
        deleteFiles(fileOrigin);
    }
    public static void deleteFiles(File fileOrigin){
        File[] fileArray= fileOrigin.listFiles();
        for (File file : fileArray){
            if (file.isFile()){
                file.delete();
            }else {
                //通过递归删除文件夹下的子文件夹以及子文件
                deleteFiles(file);
            }
        }
        //在上方的递归删除结束后,fileOrigin文件夹里的子文件和子文件夹必然全都被删除了
        //因此最后直接调用delete()方法将fileOrigin文件夹删除即可
        fileOrigin.delete();
    }
}

统计一个文件夹中每种文件的个数并打印

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

/**
 * 案例需求
 *
 * 统计一个文件夹中每种文件的个数并打印
 */

public class FileDemo3 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        File files = new File("file-practice");
        getCounts(map,files);
        System.out.println(map);
    }

    private static void getCounts(Map<String, Integer> map, File files) {
        File[] fileArray = files.listFiles();
        for (File file : fileArray){
            if(file.isFile()){
                String fileName = file.getName();
                //System.out.println(fileName);
                //此处split()的参数为"\\.",
                // “.”是 转义字符,必须得加"\\";
                String[] nameArray = fileName.split("\\.");
                String endName = nameArray[1];
                Integer count = map.get(endName);
                if(map.get(endName) != null){
                    count++;
                    map.put(endName,count);
                }else{
                    map.put(endName,1);
                }
            }else{
                getCounts(map,file);
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值