首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >camel和readLock=none的流文件

camel和readLock=none的流文件
EN

Stack Overflow用户
提问于 2020-08-25 15:20:16
回答 1查看 327关注 0票数 0

我正在尝试使用Apache来使用(流)一个大压缩文件。当文件被写入时,流应该立即开始。下面是文件使用者代码。

代码语言:javascript
复制
        rest("/api/request/{Id}/")
            .get()
            .produces(MediaType.APPLICATION_OCTET_STREAM_VALUE)
            .process(new FindFileName)
            .pollEnrich().simple("file:" + outputDir + "?fileName=${property.filnavn}&noop=false&readLock=none&delete=true").timeout(pollTimeout)

克劳斯·易卜生( Claus )建议使用readLock=none获取流。当我使用该选项时,流会立即关闭,并且只得到具有正确文件名的0字节文件。

如何配置camel的文件端点以使用readLock=none并在文件完成之前使用该文件?

独立的路由写入文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 05:11:09

没有安全的方法来知道什么时候文件是由第三方完成的。您在那里所做的,就是在投票中获得一个java.io.File,丰富到文件中。哪个骆驼可以转换成一个FileInputStream来读取。但是,如果第三方完成了文件的编写,那么这个流就无法知道什么时候。

读取当前正在编写的文件是一种非常糟糕的做法。

要知道文件什么时候写完,第三方可以使用一种策略

written

  • attempt

  • 编写第二个虚拟标记文件,以告知其已完成的

  • ,编写第二个正在进行的虚拟文件,以告知当前正在写入该文件,并在完成

  • 时删除该文件,使用临时名称写入文件,并在完成时重命名

  • ,将文件写入另一个文件夹中,并在完成后移动到

  • 监视文件以获取修改后的时间戳,如果时间戳在X期间后未更改,则假定其已完成的

  • 重新命名该文件,并假设操作系统失败时,第三方仍在写入该文件以获取修改的时间戳。

JDK不能跨文件系统工作,通常也不能很好地获得文件锁--它可能在同一个JVM中工作,但在其两个不同的系统中却不能工作。

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

https://stackoverflow.com/questions/63582056

复制
相关文章

相似问题

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