首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java在复制完成之前提取文件

Java在复制完成之前提取文件
EN

Stack Overflow用户
提问于 2016-01-25 16:58:34
回答 1查看 1.5K关注 0票数 4

我正在使用Ubuntu (以防会产生影响),我正在尝试使用Camel从一个文件夹向处理器发送文件。但是问题是,当我在文件夹中保存这个文件时(大约需要5-10秒),Camel马上就会把它捡起来。为了模拟这个过程,我使用具有大约500 k行的gedit和txt文件,所以需要一些时间来保存。

我试过增加选项:

代码语言:javascript
复制
from("file:src/Data/new/?readLock=changed&readLockMinAge=3m")

我试过用.filter(header("CamelFileLastModified").isGreaterThan(new Date(System.currentTimeMillis()-120000)))来延迟2分钟。

似乎没有什么会影响它的行为,它会立即捡起它,在处理文件时抛出一个异常,并将其移动到错误文件夹。

我知道FTP文件传输有一个问题,我以后将不得不面对,但是我甚至不能让它在本地文件系统上工作。

任何帮助都将不胜感激!

解决了

代码语言:javascript
复制
from("file:src/Data/new/?readLock=changed&readLockMinAge=3m")

参数实际上可以正常工作。我使用Jetty来运行这个项目,我应该在任何修改之后完成整个项目的清理/安装。

我不得不修改一些参数,以便:

代码语言:javascript
复制
from("file:src/Data/new/?readLock=changed&readLockTimeout=65000&readLockMinAge=1m")

因为它在抱怨readLockTimeout应该比readLockCheckInterval + readLockMinAge更多。

EN

回答 1

Stack Overflow用户

发布于 2016-01-25 17:06:07

看看文档

避免读取当前由另一个应用程序编写的文件-- JDK files在检测另一个应用程序当前是否正在写入/复制文件时受到了一些限制。而且,根据操作系统平台的不同,实现也是不同的。这可能导致Camel认为文件没有被另一个进程锁定并开始使用它。因此,你必须做自己的调查,什么套房你的环境。为了帮助解决这个问题,Camel提供了您可以使用的不同的readLock选项和doneFileName选项。还请参阅其他人直接删除文件的文件夹中使用文件的部分。

因此,我认为doneFileName选项将解决您的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34998033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档