Java中获取文件大小、重命名超过指定大小文件、删除过期文件

一、获取文件大小

通过file.length()方法可以获取文件的大小;可以通过file.exists()判断文件是否存在

package com.lh.beans;

import java.io.File;

/**
 * @author LH
 */
public class FileTest001 {
    public static void main(String[] args) {
        // 文件的全路径
        String filePath = "C:\\Users\\LH\\Desktop\\Mysql.png";
        // 创建File对象
        File file = new File(filePath);
        // 判断文件是否存在
        if (file.exists()) {
            // 文件存在,获取文件大小
            long fileSize = file.length();
            System.out.println("文件大小(字节): " + fileSize);
        } else {
            System.out.println("文件不存在");
        }
    }
}

二、重命名超过指定大小文件

在实际项目上,如我们记录的接口日志文件,超过50MB,则进行备份处理,可以考虑以下Java重命名实现方式。

package com.lh.beans;

import java.io.File;

/**
 * @author LH
 */
public class FileTest001 {
    /**
     * 5KB
     */
    private static final Long SIZE_THRESHOLD = 5 * 1024L;

    public static void main(String[] args) {
        // 文件的全路径
        String filePath = "C:\\Users\\LH\\Desktop\\Mysql.png";
        File file = new File(filePath);
        // 文件不存在不进行后续处理
        if (!file.exists()){
            return;
        }
        // 获取文件大小
        long fileSize = file.length();
        // 如果文件大于指定大小,则重命名文件
        if (fileSize > SIZE_THRESHOLD) {
            // 根据需要设定新文件名
            String newFileName = filePath + ".1";
            File newFile = new File(newFileName);

            // 重命名文件
            boolean renamed = file.renameTo(newFile);
            if (renamed) {
                System.out.println("File renamed successfully.");
            } else {
                System.out.println("Failed to rename the file.");
            }
        }
    }
}

三、删除过期文件

在实际项目上,如记录的日志文件,要求保留7天,超过7天的自动清理,可以考虑以下实现方式。

package com.lh.beans;

import java.io.File;

/**
 * @author LH
 */
public class FileTest002 {
    /**
     * 过期时间:7天
     */
    private static final Long FILE_EXPIRED_TIME = 7 * 24 * 60 * 60 * 1000L;

    public static void main(String[] args) {
        String directoryPath = "F:\\logs";
        cleanExpiredFiles(directoryPath, FILE_EXPIRED_TIME);
    }

    /**
     * 删除过期文件
     * 如何判断过期文件,用当前时间减去文件最后修改时间,如果差值大于过期时间,则认为文件过期
     *
     * @param directoryPath 文件目录
     * @param time          过期时间
     */
    private static void cleanExpiredFiles(String directoryPath, long time) {
        File directory = new File(directoryPath);
        // 找到当前目录下的所有文件
        File[] files = directory.listFiles();
        // 当前时间
        long currentTime = System.currentTimeMillis();
        for (File file : files) {
            // 不处理文件夹
            if (file.isDirectory()) {
                continue;
            }
            // 文件最后修改时间
            long lastModifiedTime = file.lastModified();
            long timeDif = currentTime - lastModifiedTime;
            // 如何判断过期文件,用当前时间减去文件最后修改时间,如果差值大于过期时间,则认为文件过期
            if (timeDif > time) {
                file.delete();
                System.out.println("Deleted file: " + file.getName());
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值