javaSE-File类与Properties

一.File类

1.File类的特点

文件和文件目录路径的抽象表示形式,与平台无关
File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
如果需要访问文件内容本身,则需要使用输入/输出流。
想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
File对象可以作为参数传递给流的构造器

2.File类的构造方法

3.File类的使用

因为windows和UNIX路径之间的分割符号不一样,但是java是跨平台的,所以java提供了一个常量public static final String separator。来解决这个问题

4.File类的常用方法

5.例子

package utils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class FileUtils {
    /**
     * 
     * @author Antg
     * @date 2021年6月30日
     * @param null
     * @retun null
     * @Description 创建文件及文件夹
     */
    public static void createFile() throws IOException {
        File f1 = new File("./src/a/b1/c1");
        File f2 = new File("./src/a/b1/c2");
        File f3 = new File("./src/a/b2/c1");
        File f4 = new File("./src/a/b2/c2");
        File f5 = new File("./src/a/b1.jpg");
        File f6 = new File("./src/a/b2.txt");
        File f7 = new File("./src/a/b1/c2/c2.jpg");

        f1.mkdirs();
        f2.mkdirs();
        f3.mkdirs();
        f4.mkdirs();
        f5.createNewFile();
        f6.createNewFile();
        f7.createNewFile();
    }

    /**
     * 
     * @author Antg
     * @date 2021年6月30日
     * @param file
     *            要删除的文件
     * @retun boolean 是否删除成功
     * @Description 删除一个文件或文件夹 思路: 递归删除 首先获取这个文件下的所有子文件和目录 如果是文件 那么删除如果是目录递归这个方法
     */
    public static boolean delFile(File file) {
        // 校验文件是否存在
        if (file == null || !file.exists()) {
            System.out.println("文件不存在");
            return false;
        }
        // 如果是一个文件直接删除
        if (file.isFile()) {
            return file.delete();
        } else {
            // 如果是一个目录,则先删除它下面的所有,然后再将该文件夹删除
            if (file.listFiles().length == 0) {
                // 如果是空目录则直接删除
                file.delete();
                return true;
            }
            // 如果不是空目录,则遍历
            for (File f : file.listFiles()) {
                if (f.isFile()) {
                    f.delete();
                } else if (f.isDirectory()) {
                    delFile(f);
                }
            }
            // 遍历完后将该目录删除
            return file.delete();
        }
    }

    /**
     * 
     * @author Antg
     * @date 2021年6月30日
     * @param file
     *            要操作的文件
     * @retun ArrayList<File> 返回一个文件list
     * @Description 获取该文件夹下的所有子文件和目录
     */
    public static ArrayList<File> getFileList(File file) {
        // 校验文件是否存在
        if (file == null || !file.exists()) {
            System.out.println("文件不存在");
            return null;
        }
        ArrayList<File> fileList = new ArrayList<File>();
        if (file.isFile()) {
            fileList.add(file);
        } else {
            for (File f : file.listFiles()) {
                if (f.isFile()) {
                    fileList.add(f);
                } else if (f.isDirectory()) {
                    fileList.add(f);
                    fileList.addAll(getFileList(f));
                }
            }
        }
        return fileList;
    }

    /**
     * 
     * @author Antg
     * @date 2021年6月30日
     * @param file 要操作的文件
     * @retun size 文件大小(字节)
     * @Description 获取指定目录的占用空间的大小(以字节为单位)
     */
    public static long getFileSize(File file) {
        // 校验文件是否存在
        if (file == null || !file.exists()) {
            System.out.println("文件不存在");
            return 0L;
        }
        if(file.isFile()){
            return file.length();
        }else if(file.isDirectory()){
            long size = 0L;
            for(File f:file.listFiles()){
                size+=getFileSize(f);
            }
            return size;
        }else{
            System.out.println("其他错误");
            return 0L;
        }
        
    }
}

二.Properties类

1.概述

该类专门用于读取以".properties"为后缀的文件,该类文件中存储着格式为key=value的键值对,多用于配置文件

2.代码实现

package utils;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class ReadConfig {
    private static Properties properties = new Properties();
    private static BufferedReader br;
    /**
     * 
     * @author Antg
     * @date 2021年7月6日
     * @param 要获取的属性
     * @retun 获取的属性值
     * @Description 读取properties的数据
     */
    public static String getConfig(String key){
        try {
            //配置文件路径
            String config = "resource/config/conf.properties";
            //创建缓存流来读取文件
            br = new BufferedReader(new FileReader(config));
            //将流的信息加载到properties对象
            properties.load(br);
            //获取key对于的值
            return properties.get(key).toString();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }finally{
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mizui_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值