基于文件的进程通信的 Java 文件锁定机制

2023-12-07

我有两个 java 进程 (JAR),一个每 1 分钟写入一个文本文件,另一个正在读取该文件并调用 Web 服务将数据存储在数据库中。

有什么办法可以在文件处于写入模式时锁定文件吗?我观察到,当wvdial我认为正在拨打调制解调器,它会在 /var/lock/ttyUSB0..LOCK 中创建一个锁定文件。如果文件处于写入模式,我想要这种过程,另一个进程可以等到写入完成。写完后进程就可以读取文件内容了。

请指导我解决我的问题。

谢谢


也许这堂课可以帮助你http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileLock.html

编辑:这篇文章可能已经涵盖了这个主题如何使用java锁定文件(如果可能)

Exemple:

FileInputStream in = new FileInputStream(file);
try
{
    java.nio.channels.FileLock lock = in.getChannel().lock();
    try
    {
        //write
    }
    finally
    {
        lock.release();
    }
}
finally 
{
    in.close();
}

现在在阅读过程中:

FileInputStream in = new FileInputStream(file);
try
{
    FileLock lock = in.getChannel().tryLock();
    if (lock == null)
    {
        //file is locked, wait or do something else
    }
    else
    {
        try
        {
            //read
        }
        finally
        {
            lock.release();
        }
    }
}
finally 
{
    in.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于文件的进程通信的 Java 文件锁定机制 的相关文章

  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 为什么我在 Mac 上看到“java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int)accessibl

    我已经在工作中愉快地构建代码好几天了 但突然我的一个项目 不是全部 失败并出现此错误消息 看看下面的答案吧 我是如何修复它的 起初我用谷歌搜索 看到很多有这个问题的人正在使用 Java 16 但我认为 错误 我正在使用 Java 11 因为
  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • 设置 Vim 背景颜色

    当我尝试更改背景颜色时 vimrc或者直接在 Vim 中使用以下命令 set background dark 这根本不影响我的背景 也没有light选项 不过 当我运行 gvim 时 看起来还不错 有没有办法在不更改 Konsole 设置的
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu

随机推荐

  • 如何附加数据库?

    当我想附加数据库时 出现错误 无法打开数据库 Almizan 因为它是版本 661 此服务器支持版本 655 及更早版本 不支持降级路径 无法打开新数据库 Almizan 创建数据库被中止 Net SqlClient 数据提供程序 帮我附加
  • 如何解决“APK META-INF/* 中复制的重复文件”问题

    我正在开发一个商业 Android 应用程序 我还使用一些根据不同许可证类型获得许可的库 其中一些库声明如下 如果图书馆有带有归属说明的 通知 文件 则在分发时必须包含该通知 其中之一已获得许可阿帕奇许可证 2 0例如 有不止一个图书馆 当
  • 使用包罗万象的通配符重定向到控制器(但使用不同的主控制器)

    我有一个问题 我想根据它的来源以不同的方式显示视图 不同的母版页 但不知道从哪里开始 我有几条路线可以捕获包含不同结构的各种不同类型的网址 在下面的代码片段中 我有一个产品路线 然后有一个合作伙伴网站路线 它也可以转到产品页面 但假设这个合
  • Rails Active Storage 并非每次都工作。有时有效,有时无效

    我正在使用 Active Storage 来存储比赛得分图像 我的班级看起来像这样 class TournamentMatch lt ApplicationRecords has many attached score cards end
  • 分区数量如何影响“wholeTextFiles”和“textFiles”?

    在spark中 我明白了如何使用wholeTextFiles and textFiles 但我不确定何时使用哪个 到目前为止我所知道的是 当处理不按行分割的文件时 应该使用wholeTextFiles 否则使用textFiles 我认为默认
  • 撤销 Azure AD B2C 上的刷新令牌

    我不知道是否有解决方案可以在以下情况下撤销刷新令牌 用户使用重置密码策略重置自己的密码 用户使用基于Graph API的特定表单更改自己的密码 我认为出于安全原因必须实施它 但我不知道现在是否可能 如果不可行的话什么时候可以使用 提前致谢
  • 创建实现 ContainerAwareInterface 的服务

    当我扩展 ContainerAware 或实现 ContainerAwareInterface 时 该服务不会调用 setContainer class CustomService implements ContainerAwareInte
  • 将字符串参数传递到点击绑定中,同时保留 Knockoutjs 中的默认参数

    我想将参数传递给单击时调用的函数 同时保留默认参数 问题出在啤酒花部分 我试着做remove
  • Python 的 itertools.product() 的效率

    所以我正在寻找不同的方法来计算笛卡尔积n数组 我遇到了使用以下代码的相当优雅的解决方案 此处为 SO import itertools for array in itertools product arrays print array 看着
  • XSL:列表分为几列

    请帮帮我 有一个节点列表
  • Android - 动态添加片段

    我浏览了互联网 只找到了 Android 片段的示例 它们被放置在适当的位置 比如其中两个 一个作为列表 第二个是显示列表中所选项目的详细信息 我的目标是拥有经典的 android 活动 并且我希望能够使用特定的 GUI 动态添加预先准备的
  • 3rd 方库和 Py2exe

    我将如何使用 py2exe 将 Beautiful soup 与我的代码一起捆绑到 exe 中 我现在用于 setup py 的代码是 from distutils core import setup import py2exe equiv
  • 如何让路线绘制更加高效?

    这是我用来绘制路线的代码 当我有 1000 个点时 路线会严重减慢用户界面 也许有人可以提供一个代码片段或一个链接来解释如何更有效地绘制路线 我知道解决这个问题的一种方法是缓存位图路径 但不知道该怎么做 public class PathO
  • 获取塔 GSM 位置 lat lng

    我想知道一种方法或方法来查找手机所连接的小区的位置 GSM 小区 这是我的课 package com example signal import java io File import java io FileOutputStream im
  • pageinit 上的 jQuery 移动弹出窗口

    我希望页面加载后立即打开一个弹出窗口 但似乎被旋转轮卡住了 这是一个小提琴手来演示该问题 任何帮助将不胜感激 http jsfiddle net Ohpyx UGfXG 我正在使用的代码是 document live pageinit fu
  • 使用 Groovy 连接字段后,CSV 上出现引号

    我正在使用 groovy 连接 CSV 中的两个字段 它工作正常 只是连接字段显示有引号 有什么办法可以解决这个问题吗 ant mkdir dir target new File target UpsertCheckDeals csv wi
  • Tensorflow 如何处理一列中具有多个输入的分类特征?

    例如我有一个数据如下csv format csv col0 col1 col2 col3 1 A E A C 3 0 B D F 2 2 C 2 用逗号分隔的每一列代表一个特征 通常 一项功能是独热的 例如col0 col1 col3 但在
  • Google Cloud Functions - 通过 HTTP 上传到 Google Cloud Storage

    我正在尝试使用 Google Cloud Function 处理文件上传 该函数使用 Busboy 解析多部分表单数据 然后上传到 Google Cloud Storage 我不断收到ERROR Error ENOENT no such f
  • 如何使用 ProgressMonitorInputStream

    我知道我一定错过了一些非常明显的东西 但是每当我在复制文件时尝试使用进度监视器输入流时 我永远不会弹出进度对话框 我看到的示例除了将输入流包装在 ProgressMonitorInputStream 中之外似乎没有做太多事情 文档说 这将创
  • 基于文件的进程通信的 Java 文件锁定机制

    我有两个 java 进程 JAR 一个每 1 分钟写入一个文本文件 另一个正在读取该文件并调用 Web 服务将数据存储在数据库中 有什么办法可以在文件处于写入模式时锁定文件吗 我观察到 当wvdial我认为正在拨打调制解调器 它会在 var