文件写异步发生?

时间:2016-05-19 07:01:04

标签: java ruby filesystems

在我的Ruby on Rails应用程序中,我有一个例程写入文件(通过java应用程序),然后读取写入的文件。

write_to_file(file.path, data)
read_file(file.path)

大部分时间这都很好。但有时看起来文件写入没有发生,但也没有错误。当我用相同的数据重试例程时,它每次都有效。

我已经开始考虑文件写入是否异步发生,并且在将数据写入磁盘之前实际读取了文件。这有可能吗?

write_to_file通过负责编写的套接字连接调用java应用程序。 Java应用程序将一个简单的json字符串返回给Rails。

2 个答案:

答案 0 :(得分:3)

这个问题确实是" Java代码做了什么?"并不是一个真正的Ruby问题。它甚至不是一个真正的Java问题,因为Java语言允许(当然)任何类型的实现。

在文件可供读取之前,Java代码肯定会返回。我们不知道。它可能是将请求发布到队列,然后返回,例如。

您需要查看Java代码。如果你不想打扰它,你总是可以这样做:

sleep 0.01 until File.readable?(file.path)

这有点粗糙,有更优雅的方法来做到这一点,但它会起作用。

答案 1 :(得分:0)

您可能遇到文件缓冲,其中少量数据未写入文件,除非它已被刷新。我不确定您在此处使用的界面,但flush方法旨在处理这种情况。