DELETE_ON_CLOSE 在 Linux 上关闭之前删除文件

2024-01-09

我使用 Java 7 nio API 有以下代码:

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;

public class TestDeleteOnClose {

    public static void main(String[] args) throws IOException {
        Path tmp = Files.createTempFile("a", "b");
        OutputStream out = Files.newOutputStream(tmp, StandardOpenOption.DELETE_ON_CLOSE);

        ObjectOutputStream os = new ObjectOutputStream(out);

        os.write(0);

        os.flush();
        System.out.println(Files.exists(tmp));
        os.close();
        System.out.println(Files.exists(tmp));
    }
}

在 Windows 上,我看到了我所期望的,即true false。在 Linux 上我看到false false。是预期的吗?难道我做错了什么? 文件被过早删除的事实是有问题的,因为我需要在写入文件后测试它的大小。

我在 Linux 和 Windows 上使用 jdk7u25,并且可以在装有 RedHat 或 ArchLinux 的机器上重现。

编辑:即使我在再次调用 os.write() 之前测试文件是否存在,我也会被告知该文件不再存在。如果我用以下命令打开文件CREATE选项,然后我会看到true true.


看起来 Linux JVM 会在您打开文件后立即将其删除,这是有道理的,因为您可以在 Linux 上执行此操作。我也将采用这种方式来实现它。您必须自己跟踪文件中写入了多少内容,例如通过插入一个FilterOutputStream计算字节数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DELETE_ON_CLOSE 在 Linux 上关闭之前删除文件 的相关文章

  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 类和数据类型有什么区别?

    我听到过这样的说法 我们可以说类是一种数据类型 或者数据类型是类的一种类型 谁能向我解释一下这到底是什么意思 C 是一种强类型语言 因此每个变量和对象 必须有一个声明的类型 数据类型可以描述为 内置数据类型 例如 int 或字符 或 用户定
  • 无法使用 ldap 凭据登录 wso2 身份服务器

    我试图将 wso2 身份服务器连接到 Ldap ReadWriteLDAPUserStoreManager 集成成功并且可以从 wso2 身份服务器访问 ldap 用户 但问题是我无法使用 ldap 用户名和密码登录身份服务器 请帮我 Pl
  • C++:多态类模板

    考虑一个存储一堆 Date 对象的 Calendar 类 日历旨在保存从 Date 继承的任何类型的对象的集合 我认为最好的方法是有一个类模板 例如 template
  • 如何创建可在多个 React 项目中使用的私有共享组件库

    以下场景 项目1需要使用CustomButton jsx 项目2需要使用CustomButton jsx 目前的解决方案 复制粘贴CustomButton jsx进入项目 1 和 2 所需的解决方案 创建项目 3 其中包括CustomBut
  • iOS 8 共享扩展无法在设备上运行

    我在 xcode 中创建了一个新的目标共享扩展 然后我在我的设备上运行它 我不知道为什么当我在我的设备 iPhone 5c iPhone 5s iPhone 6 上运行共享扩展时 不会显示 请帮助我 任何有关如何解决此问题的建议将不胜感激
  • 将 Keras 预训练模型扩展到具有附加通道或波段的图像

    我只是希望澄清之前一篇文章的一些信息 该文章讨论了如何将 Keras 预训练模型 如 VGG 或 InceptionV3 扩展到不同大小的图像 我的问题是我有一些 8 波段的卫星图像 所以图像可能是650x650x8而不是通常的 RBG 3
  • 如何在XMPP(Openfire)中删除群聊消息?

    我想从 openfire 历史记录中删除单个群聊消息 是否可以 历史记录不保存在 OfMessageArchive 表中 删除应用程序中的消息后 该消息消失 但重新登录后从 Openfire 的 基础 下载 它仍然可见 到目前为止 您还无法
  • QtabBar 文本和图标

    您好 我想在 QtabBar 小部件中选项卡栏的每个选项卡中的图标下方放置图标和文本 默认情况下 文本和图标设置为彼此相邻 我想将一个显示在另一个下方 我们怎样才能做到呢 似乎只有一种方法可以更改图标位置 重新实现 QTabBar 的pai
  • 按下时如何将数据从第二个活动传递到第一个活动? - 安卓

    我有2个活动 活动1 and 活动2 In Activity1 I ve a Button and TextView 当按钮被点击时活动2已开始 In Activity2我有一个EditText 我想显示检索到的数据EditText in
  • 如何使用 aws lambda 将文件写入 s3 (python)?

    我尝试使用 lambda 函数将文件写入 S3 然后测试显示 成功 但我的 S3 存储桶中没有出现任何内容 发生了什么 有人可以给我一些建议或解决方案吗 多谢 这是我的代码 import json import boto3 def lamb
  • 获取轴上 numpy.argmax 元素的索引

    我有 N 维矩阵 其中包含具有 N 个参数的函数的值 每个参数都有离散数量的值 我需要在除一个参数之外的所有参数上最大化该函数 从而产生一个大小等于非最大化参数值的数量的一维向量 我还需要保存其他参数采用的值 为此 我想迭代应用numpy
  • 16 字节实数的 MPI_AllReduce 的奇怪结果

    编译器 gfortran 4 8 5 MPI 库 OpenMPI 1 7 2 预装 OpenSuSE 13 2 这个程序 use mpi implicit none real 16 x integer ierr irank type16 c
  • Java 8 中接口方法的隐式声明是什么?

    我正在读我的旧 SCJP 6 书 作者 Kathy Sierra Bert Bates 提到的 All the interface方法是隐含地 public and abstract默认情况下 interface方法一定不能是static
  • 如果 StringBuilder 或 StringBuffer 可以做 String 所做的事情,为什么还要有 String 类呢? [复制]

    这个问题在这里已经有答案了 我一直想知道为什么JAVA和C 有String 不可变和线程安全 类 如果有StringBuilder 可变且非线程安全 或StringBuffer 可变和线程安全 类 不是StringBuilder Strin
  • 如何查看origin/master 领先于master 的提交消息?

    当 git 通知我我的本地分支落后于 master 时 我如何告诉 git 打印出我落后的日志消息 例如 在下面的情况下 如何查看在 origin master 上我在 master 上没有的 2 个提交的日志消息 git status O
  • 如何在显示 UIMenu 之前修改它以支持动态操作

    iOS 14 添加了点击或长按 UIBarButtonItem 或 UIButton 时显示菜单的功能 如下所示 let menu UIMenu children UIAction title Action image nil action
  • T-SQL 将不同行中最大长度列的行分组(?)

    我正在尝试想出一种方法 根据基于行键的任何行中最长的字符串来组合表中的行 example CREATE TABLE test1 akey int not null text1 varchar 50 NULL text2 varchar 50
  • 使用 openshift rhc tail 命令

    如何跟踪 openshift 日志文件 我发出了以下命令 rhc tail myapp 它似乎显示第一个错误行 然后停止 但不退出 如果我按 ctrl C 它会询问是否停止批处理 如何显示最后几个错误并可以逐页浏览 有向下翻页 向上翻页快捷
  • selenium 将两个 xpath 测试合二为一

    我尝试结合检查两种情况 如果启动检查失败 我们会看到重试按钮 el WebDriverWait self driver 10 until EC element to be clickable By NAME Try again 或者启动检查
  • DELETE_ON_CLOSE 在 Linux 上关闭之前删除文件

    我使用 Java 7 nio API 有以下代码 import java io IOException import java io ObjectOutputStream import java io OutputStream import