Java 日看一类(13)之IO包中的DefaultFileSystem类和DeleteOnExitHook类

【java】java DeleteOnExitHook 这个东西 不重要,因为我基本不会使用,了解一下即可。 阅读详情

这两个类都是非public类,也就是保留类,仅能被同一个包中的代码所使用


DefaultFileSystem类没有任何的继承关系,也未引入任何包(甚至连类头注释都没有)


代码如下(就一个方法,不存在变量

public static FileSystem getFileSystem() {
    return new UnixFileSystem();
}

作用是返回默认的Unix文件系统对象(默认构造方法给的是默认对象)



DeleteOnExitHook类引入了以下包

import java.util.*;
import java.io.File;

不存在继承关系



类头注释如下:

/**
 * This class holds a set of filenames to be deleted on VM exit through a shutdown hook.
 * A set is used both to prevent double-insertion of the same file as well as offer
 * quick removal.
 */

大意为:

这个类记录了在虚拟机关闭时将被删除的文件名,通过关闭触发(删除)

被用于防止文件的重复插入和提供快速删除功能



该类含有一个成员变量:

记录文件名的具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现

private static LinkedHashSet<String> files = new LinkedHashSet<>();



含有三个方法:

静态构造方法(默认

private DeleteOnExitHook() {}

向链接列表中添加文件

static synchronized void add(String file) {
    if(files == null) {
        // DeleteOnExitHook is running. Too late to add a file
        throw new IllegalStateException("Shutdown in progress");
    }

    files.add(file);
}

进行删除工作

static void runHooks() {
    LinkedHashSet<String> theFiles;

    synchronized (DeleteOnExitHook.class) {//数据绑定
        theFiles = files;
        files = null;//清空该类的记录
    }

    ArrayList<String> toBeDeleted = new ArrayList<>(theFiles);

    // reverse the list to maintain previous jdk deletion order.
    // Last in first deleted.
    Collections.reverse(toBeDeleted);//反转排列顺序(反转后类似栈,后添加先删除)
    for (String filename : toBeDeleted) {
        (new File(filename)).delete();
    }
}



含有一个静态代码块:检测该类的执行触发条件

static {
    // DeleteOnExitHook must be the last shutdown hook to be invoked.
    // Application shutdown hooks may add the first file to the
    // delete on exit list and cause the DeleteOnExitHook to be
    // registered during shutdown in progress. So set the
    // registerShutdownInProgress parameter to true.
    sun.misc.SharedSecrets.getJavaLangAccess()
        .registerShutdownHook(2 /* Shutdown hook invocation order */,
            true /* register even if shutdown in progress */,
            new Runnable() {
                public void run() {
                   runHooks();
                }
            }
    );
}




这两个类都比较简单,同时也是保留类,大概看下即可

DSPACE仿真平台的使用 DSPACE仿真平台的使用 文章目录DSPACE仿真平台的使用1.ModelDesk新建项目2.MotionDesk引入项目3.ControlDesk引入项目4.项目整合运行 我们使用DSPACE仿真平台软件来模拟小汽车的自动驾驶。 总共需要用到DSPACE大类下的三个软件:ModelDesk、ControlDesk、MotionDesk。 1.ModelDesk新建项目 在桌面上点击ModelDesk图标,打开DSPACE—ModelDesk 选择 File 标签,侧边栏选择 New,点击 New A 阅读详情

相关推荐

Uniapp+Vue3+Monorepo:如何优化你的前端开发流程(附完整配置代码)

本文详细介绍了如何利用Uniapp+Vue3+Monorepo技术栈优化前端开发流程,提升代码可维护性和团队协作效率。通过Monorepo架构实现依赖管理智能化、代码复用最大化和构建流程统一化,结合完整配置代码和实战指南,帮助开发者快速构建高性能跨端应用。

weixin_29011993的博客 453

这个案例你可以直接拿去用。

给大家分享一个生产问题排查案例。这个案例你甚至都不需要改,张口就可以说:这个问题是我解决的。 因为这个案例本身就不复杂,难的是真正动手去做。 而只要涉及到“真正动手”去做,就能拦下 80% 的人。 背景 某个风和日丽的下午,正酣畅淋漓的搬砖,突然运维同事在群里通知,核心服务某个节点内存异常,服务假死。神经一下子紧张起来,赶紧跑到运维那边观察现象。 观察的结果是服务内存溢出,该服务是核心服务,分配了 5G 内存。 运维在转存快照后,立刻重启服务后正常。 在接下来的一段时间里,另一台服务...

HongYu012的博客 2207

手把手教你用周立功USBCANFD-200U和ZCANPRO软件,从驱动安装到UDS诊断一条龙搞定

本文详细介绍了如何使用周立功USBCANFD-200U硬件和ZCANPRO软件,从驱动安装到UDS诊断的全流程操作指南。涵盖硬件连接、软件配置、CAN通信测试及UDS诊断实战,帮助汽车电子爱好者和工程师快速掌握CAN总线通信技术,实现专业的车辆诊断功能。

weixin_30752699的博客 580

【java】java删除文件delete和deleteOnExit 方法的区别,为什么调用deleteOnExit无效?...

delete()   是即刻删除 public boolean delete() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkDelete(path); } ...

weixin_34351321的博客 641

亚马逊商品评论爬取与情感分析实战:Python+BeautifulSoup高效解析(附反爬技巧)

本文详细介绍了使用Python和BeautifulSoup库高效爬取亚马逊商品评论并进行情感分析的完整实战流程。文章从环境搭建、核心代码编写入手,重点讲解了如何通过设置请求头、添加延迟等防封策略应对反爬机制,确保数据抓取的稳定性。最后,利用TextBlob库对评论文本进行情感分析,并通过可视化图表直观展示产品口碑,为电商选品与市场调研提供数据支持。

weixin_29046611的博客 1164

解决Visual C++2008安装失败,error 1935

重装系统后Visual C++没了,其他都能装上但VC2008会报这个error 1935。鉴于我把网上所有的解决方法排了一遍错,我也不知道是哪一步起效,所以就都放上来了。特别注意:报error 1935的错误原因可能不尽相同,比如我的报错开头为An error occurred,结尾为HRESULT:0x80070005。80070005 拒绝访问通常是权限问题,安装Visual C++无法写入文件夹或注册表(直接跳转第7步)

weixin_44427808的博客 1万+

jdk1.8 java.io.File类源码阅读

public class File implements Serializable, Comparable<File> 实现了序列化和内部比较器Comparable. 内部比较方法 public int compareTo(File pathname) { return fs.compare(this, pathname); } private s...

weixin_42955916的博客 1059

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1168

Java源码学习:深入Java I/O源码之 `DeleteOnExitHook`——JVM 优雅关闭的守护者

在软件开发中,“善始善终”是保证程序健壮性和系统稳定性的黄金法则。当一个 Java 应用程序(或 JVM)正常终止时,如何确保那些临时创建的、不再需要的文件被彻底清理干净,避免留下“数字垃圾”,是一个看似简单却至关重要的问题。 java.io.DeleteOnExitHook 正是 JVM 为解决这一问题而内置的精巧机制。它通过与 JVM 的关闭钩子(Shutdown Hook) 体系深度集成,提供了一种可靠、线程安全的方式来注册需要在虚拟机退出时删除的文件。本文将深入其源码,全面解析其设计哲学、线程安全

yangzhihua的专栏 386

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3820

【unity游戏开发入门到精通——UGUI】UI控件 —— Image图像控件

【unity游戏开发入门到精通——UGUI】UI控件 —— Image图像控件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2361

java:File.deleteOnExit()实现分析塈用于多级目录时的讲究

java.io.File对象有个有意思的方法deleteOnExit,这个方法的用途简单说就是要求在java虚拟机结束的时候删除该文件/目录。 删除文件,很好理解,结束的时候这个文件自动被删除,但是对于目录,我们知道,目录是可以层层嵌套的,对于一个有多级子目录的File对象?如何确保使用deleteOnExit被准确删除呢?还是举个栗子吧:package net.facesdk.cas; impo

10km的专栏 4842

YOLOv11涨点改进| CVPR 2026 | 全网独家首发、特征融合改进篇| 引入SRFusion 空间细化多级融合,含多种创新融合改进,涨点可直接发论文,适合裂缝图像检测,小目标检测任务高效涨点

🔥本文提出SRFusion空间细化多级融合模块,用于改进YOLOv11网络模型。该模块通过高分辨率特征引导低分辨率语义特征的融合,利用空间注意力机制对上采样后的特征进行加权细化,增强多尺度特征间的空间细节交互。SRFusion模块能够提升模型对目标区域的表达能力,有效改善小目标、密集目标及复杂背景场景下的检测效果,同时保持YOLOv11的高效性与实时检测性能。文章详细介绍了模块结构、实现原理、核心代码及在YOLOv11中的三种配置方法,为模型优化提供了创新解决方案。

Ai缝合怪、助力小伙伴高效发论文 149

IO学习笔记(三)

File类 用来将文件或者文件夹封装成对象; 方便对文件与文件夹的属性信息进行操作; file对象可以作为参数传递给流的构造函数; 流对象不能操作文件夹以及属性信息,只能操作数据,而想要操作被数据封装成文件的对象,只能用File类。 File类常见方法: 1、创建。 boolean   createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回fa

lpf870826的专栏 400

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

sqoop学习笔记

(1)query子句$CONDITIONS,query语句最好使用双引号$CONDITIONS前面加“\” sqoop-import --connect jdbc:oracle:thin:@xxxxxxxxxx:1521/orcl --username xxxx--password xxxx--query " select a,b from test1 where \$CONDITIONS a...

ft193139的专栏 788

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

(九)java.io.FileSystem抽象类详解

java.io.FileSystem类是有default修饰符修饰,也就是只有当前类和同一个包下面的类才能访问,它是对本地文件系统的抽象。 1.public static native FileSystem getFileSystem(); 分析:返回表示该平台文件系统的文件系统对象;native修饰符表示一个java调用非java的接口的方法。 2.public abstract ch...

OceanSky的专栏 2242

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java文件系统_Java之IO(五)文件系统

1.前言在讲解Java的文件流之前,先来认识一下Java的文件系统的实现。值得一提的是,Java8与Java7相比,对这一块做了一些改动,接下来会进行对比介绍,但主要还是以Java8为主。1.1 Java7与Java8不同之处概览首先,Java8多了一个DefaultFileSystem,但少了一个Win32FileSystem类,其次两者的抽象父类FileSystem有些许区别。Java7的抽象...

weixin_35651471的博客 545

Java IO体系之File

简单介绍 Java.io.File类主要是完成了文件夹管理的命名、查询文件属性和处理目录等操作,它不进行文件夹内容的读取操作。 源码分析 继承关系 实现了java.io.Serializable接口,java.lang.Comparable接口【内比较器】 public class File implements Serializable, Comparable&amp;amp;amp;amp;amp;amp;amp;lt...

thebigdipperbdx的博客 382

黑马程序员--- 学习笔记(第二十天)

File类 用于文件夹或文件封装成对象 方便对文件与文件夹的属性信息进行操作 File对象可以作为参数传递给流的构造函数 File f1=new File("a.txt"); 将a.txt封装成对象,可以将已有的和未出现的文件或者文件夹封装成对象 File f2=new File("c:\\","b.txt"); 将父目录与文件封装成对象 File f3=n

﹉`葬伈 1013

Java IO File中delete()和deleteOnExit()的区别

delete(): 直接删除 public boolean delete() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkDelete(path); } if (isInvalid()) { return false; }

i余数的博客 952

file.delete()与file.deleteOnExit()的区别

File类delete和deleteOnExit方法的区别

荣耀之路 2万+

关于System.gc()解决File的Delete和DeleteOnExit()删除文件无效的问题——已解决

项目中使用FILE类中的Delete和DeleteOnExit删除文件,当文件夹有多个文件时使用delete无效,使用DeleteOnExit删除有时候有效有时候无效。。。。百思不得其解…… 关于两个方法的区别,网上很多解释,不多说。 程序检查了很多遍,确实关闭了所有的FileInputStream和FileOutputStream,但是仍然删除不掉。 因@anly_hz兄台的帖子得到灵感,

筱光的博客 5074

java file deleteOnExit()方法踩坑记

背景   从视频存储中心下载视频保存到本地。发现执行过程确实能看到本地视频的产生,一旦程序执行完,该视频又被删除了。code 如下 : @Test public void testDownloadVideo() throws IOException { String url = "http://xxx/t.mp4"; File file = new Fi

csdn_xpw的博客 1万+

文件删除的一个不常见的Bug----deleteOnExit方法的问题

文件删除的一个不常见的Bug 今天遇到一个蛋疼的问题,重新启动SpringBoot的时候,会自动删除我项目里面一个文件夹下的文件,令我百思不得姐。最后,通过各种尝试,终于找到原因了,原来是deleteOnExit()方法的问题,非常小,但是必须引起我们的重视。否则将会面临“灭顶之灾”。详细过程如下: 这个是我部分代码,红线框住的地方就是问题之所在。 在这里,我虽然每次都能生成文件,文件的内容格式也是正确的(因为deleteOnExit 方法不会立即删除文件,所以每次你还能看到生成后的文件),但

爱吃早餐的程序员 3244

深入JVM关闭与关闭钩子

通常而言,对于JVM的关闭我们很少去关注,但是了解JVM的关闭能帮我们在JVM关闭时做一些合理的事情。

Floating Cat 1万+

Java中使用deleteOnExit()删除临时文件出现的问题

       这几天在做一个读取外部系统文件数据的任务,需要把外部文件数据,读到本地进行处理。        刚好,Java中可以创建临时文件,并且任务中要求需要删除临时文件,通过查询API,Java的File类中有createTempFile(),可以创建临时文件,而deleteOnExit()可以在系统退出时删除临时文件。下面是API的介绍:         但是实际中使用dele...

Jxinx 9006
上一篇: Java 日看一类(12)DataOutput接口与DataOutputStream类
下一篇: Java 日看一类(14)之IO包中的EOFException异常类和ExpiringCache内部类
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值