java获取被占用的文件进程_java – 进程无法访问该文件,因为它正被另一个进程使用...
我有一段代码监视目录以添加文件.每当将新文件添加到目录时,将挑选该文件的内容并在kafka上发布,然后删除该文件.
这在我发出单个请求时有效,但是一旦我将代码从jMeter请求5或10个用户请求,内容就会在kafka上成功发布,但代码无法删除该文件.我收到一个FileSystemException,其中包含一个消息,该进程无法访问该文件,因为它正由另一个进程使用.
我想有一些我无法看到的并发问题.
public void monitor() throws IOException, InterruptedException {
Path faxFolder = Paths.get(TEMP_FILE_LOCATION);
WatchService watchService = FileSystems.getDefault().newWatchService();
faxFolder.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
boolean valid = true;
do {
WatchKey watchKey = watchService.take();
for (WatchEvent> event : watchKey.pollEvents()) {
if (StandardWatchEventKinds.ENTRY_CREATE.equals(event.kind())) {
String fileName = event.context().toString();
publishToKafka(new File(TEMP_FILE_LOCATION + fileName).toPath(), "topic");
}
}
valid = watchKey.reset();
} while (valid);
}
private void publishToKafka(Path path, String topic) {
try (BufferedReader reader = Files.newBufferedReader(path)) {
String input = null;
while ((input = reader.readLine()) != null) {
kafkaProducer.publishMessageOnTopic(input, topic);
}
} catch (IOException e) {
LOG.error("Could not read buffered file to send message on kafka.", e);
} finally {
try {
Files.deleteIfExists(path); // This is where I get the exception
} catch (IOException e) {
LOG.error("Problem in deleting the buffered file {}.", path.getFileName(), e);
}
}
}
异常日志:
java.nio.file.FileSystemException: D:\upload\notif-1479974962595.csv: The process cannot access the file because it is being used by another process.
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source)
at java.nio.file.Files.deleteIfExists(Unknown Source)
at com.panasonic.mdw.core.utils.MonitorDirectory$FileContentPublisher.publishToKafka(MonitorDirectory.java:193)
at com.panasonic.mdw.core.utils.MonitorDirectory$FileContentPublisher.sendData(MonitorDirectory.java:125)
at com.panasonic.mdw.core.utils.MonitorDirectory$FileContentPublisher.run(MonitorDirectory.java:113)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java获取被占用的文件进程_java – 进程无法访问该文件,因为它正被另一个进程使用...相关推荐
- win10解决你当前无权访问该文件夹,拒绝你访问该文件夹
问题: win10系统中,有时打开一个文件夹,会提示"你当前无权访问该文件夹","拒绝你访问该文件夹". 解决方法: 首先选中这个文件夹右键属性,在属此处性界面 ...
- html5如何访问电脑文件夹,手机如何直接访问电脑文件?手机访问电脑文件
通过手机QQ也可以访问电脑文件.有时我们并不想一直盯着电脑,但是又需要查看电脑里的文件.有没有一种方法可以做到,不盯着电脑也能查看电脑上的文件呢?下面给大家介绍一下如何用手机访问电脑文件. 1.在手机 ...
- java 获取发布后的路径问题_Java中的路径问题实例分析
Java中的路径问题实例分析 前言:关于Java中得路径问题,网上有很多获取的答案,我这篇文章的目的在于说明获取路径时一些不常见的概念.在实际应用中使用的比较多的就是,当前路径和配置文件的路径(其他文 ...
- java md5 文件验证_Java 自带MD5 校验文件
转载声明:http://blog.csdn.net/zishan007/article/details/7971229 package com.chinasoft.corpinfosys.common ...
- java语言怎样判断文件夹_JAVA语言之如何判断文件,判断文件夹是否存在的代码...
本文主要向大家介绍了JAVA语言之如何判断文件,判断文件夹是否存在的代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.判断文件是否存在,不存在则创建File file = ne ...
- java文件比较_Java 比较两个任意文件是否相同
一.比较规则 先比较两个文件的长度,如果不一样则文件肯定不一样. 否则将文件读取出来,一个字节一个字节的比较二者内容是否相同. import java.io.*; public class FileC ...
- Java面试poi中excel版本大小_java 中 poi解析Excel文件版本问题解决办法
java 中 poi解析Excel文件版本问题解决办法 发布时间:2020-10-02 03:46:15 来源:脚本之家 阅读:91 作者:程诺 poi解析Excel文件版本问题解决办法 poi解析E ...
- 【操作系统/OS笔记17】文件系统基本概念、文件描述符、文件系统访问、文件别名、文件系统种类
本次笔记内容: 12.1 文件系统:总体介绍 12.2 基本概念 12.3 基本概念--文件系统和文件 12.4 基本概念--文件系统的功能 12.5 基本概念--文件和块 12.6 基本概念--文件 ...
- ftp文件夹错误 windows无法访问此文件夹_Adobe 安装错误代码对照表及解决方案
在安装Adobe软件时,提示安装错误 不用着急,可以根据提示的错误代码,找到解决方法 下面是官方提供的Adobe错误代码对照表及解决方案 你可以使用浏览器快捷键 CMD+F(MacOS)或 Ctrl+ ...
最新文章
- ntbackup 创建卷影复制:ffffffff 时出现错误
- 室外电磁赛道铺设补充说明
- 为什么在 Verilog HDL 设计中一定要用同步而不能用异步时序逻辑?
- java super object,java学习记录笔记--继承,super,Object类
- UOJ #590. 天天和树
- C语言字符串数字提取函数,支持负数、浮点数、科学记数法
- 前端学习(2246)码云课程介绍
- Activity中 onResume和onPause与onStart()和onStop()的一些思考
- 借助 Pod 删除事件的传播实现 Pod 摘流
- 在linux中 与 的区别,在linux中,和, |和|| , 与 的区别
- 传输层学习之五(TCP的SACK,F-RTO)
- A Byte of Python 笔记(2)基本概念:数、字符串、转义符、变量、标识符命名、数据类型、对象...
- Python中文手册
- 方舟代码_源代码丢失的方舟
- phpstudy升级mysql5.6_phpstudy升级mysql数据库
- CDA I级学习 - 漏斗模型
- 软件项目经理应具备的素质和条件_软件项目经理素质能力的必备要求
- ajax 传递对象 返回状态500
- Windows系统下安装Linux双系统(硬盘安装)
- Linux:C获取当前网速 网线/4G
热门文章
- Intellij IDEA神器居然还有这些小技巧
- Consul入门04 - Consul集群
- Java 洛谷 P2141 珠心算测验
- cad新手必练300图_[CAD]平面练习图,CAD新手练技术练速度的好去处
- 恢复mysql数据库详细图解_binlog恢复mysql数据库超详细步骤
- 网络里找不到工作组的计算机,win7系统看不到工作组计算机怎么办?win7系统看不到工作组计算机解决方法...
- 必须掌握的空调制冷系统维修要点
- IT 巡检内容、工具、方法 amp; Linux / AIX / Oracle / VMware 巡检表模板 | 周末送资料...
- 一套实用的数据中心设计方案
- TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率