当前位置: 首页 > news >正文

File类踩坑记录

背景

有一天运维突然告诉我,生产服务器下面的目录文件满了,我表示一脸蒙,去服务器一看,才发现确实是非常多的文件,那这个是怎么产生的呢?我们一起来研究一下。

在Java中,File 类的 deletedeleteOnExit 方法有不同的用途和行为:

file.delete()

  • 作用:立即删除文件或目录。
  • 返回值:如果删除成功,返回 true,否则返回 false。这可能由于文件不存在、没有权限或文件被其他进程占用等原因。
  • 使用场景:当你需要实时删除文件或目录,可以立即使用这个方法。

file.deleteOnExit()

  • 作用:在程序终止时自动删除文件。也就是说,文件会在 JVM 退出时被删除,而不是立即。
  • 返回值:无返回值。该方法只是将文件的删除请求标记为在应用关闭时执行。
  • 使用场景:通常用于需要临时文件的情况,比如创建一些不再需要的临时文件并希望在程序结束时自动清理。
    而我代码中也正是调用的file.deleteOnExit()方法,所以导致在springboot项目中,并没有给我及时的删除,进而导致服务在运行一段时间后,保留了大量的临时文件。

顺带复习一下如何在linux服务器上删除制定类型的文件:
在Linux中,可以使用命令行工具来删除指定类型的文件。最常用的工具是 findrm 命令。以下是一些示例:

使用 find 命令删除指定类型的文件

  1. 删除特定扩展名的文件(例如 .txt):

    find /path/to/directory -type f -name "*.txt" -delete
    
  2. 删除多个扩展名的文件(例如 .log.tmp):

    find /path/to/directory -type f \( -name "*.log" -o -name "*.tmp" \) -delete
    
  3. 按照文件大小或修改时间删除文件

    • 删除大于100MB的文件:

      find /path/to/directory -type f -size +100M -delete
      
    • 删除修改时间超过30天的文件:

      find /path/to/directory -type f -mtime +30 -delete
      

使用 rm 结合通配符删除

  1. 删除当前目录中的所有 .jpg 文件

    rm *.jpg
    
  2. 删除子目录及当前目录中的所有 .log 文件

    rm -r *.log
    

小心使用

  • 使用 -delete 操作时要非常小心,最好先用 -print 查看将要删除的文件:

    find /path/to/directory -type f -name "*.txt" -print
    
  • 注意彻底删除后,文件将无法恢复


http://www.mrgr.cn/news/61357.html

相关文章:

  • K8S集群常用命令
  • 分布式ID—雪花算法
  • 网络安全、Web安全、渗透测试之笔经面经总结
  • 使用python生成gif图
  • 【数据结构】树的定义
  • An FPGA-based SoC System——RISC-V On PYNQ项目复现
  • 细胞核荧光探针(一):一种红色发光、NADPH响应的的喹啉基
  • 【点云异常点检测数据集】Real3D-AD数据集介绍
  • 基于SSM大学生互动交流网站设计与实现
  • 四元数各个旋转API的使用
  • 【JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总】
  • mongo实操笔记
  • 美团外卖霸王餐系统如何对接?有哪些具体步骤?
  • Java Lock LockSupport 源码
  • 代码学习:如何阅读开源代码
  • 网络搜索引擎Shodan(6)
  • 今日总结10.29
  • 重学SpringBoot3-怎样优雅停机
  • 基于ssm+jsp639实验室排课系统设计与实现
  • 力扣每日一题 3211. 生成不含相邻零的二进制字符串
  • 代码随想录 | Day35 | 动态规划 :最小花费爬楼梯不同路径不同路径II
  • Spring Cloud 和 Dubbo 的区别
  • 超好玩又简单-猜数字游戏(有手就行)
  • 【JavaEE】【多线程】定时器
  • 《机器学习by周志华》学习笔记-神经网络-03全局最小误差与局部极小误差
  • QT中使用图表之QChart绘制曲线图