使用RandomAccessFile检查空位置

时间:2013-09-19 07:46:57

标签: java null eof randomaccessfile

我需要检查随机访问文件中的位置是否尚未写入。这个问题是,当位置实际上尚未被写入时,我得到(如预期的那样)EOFException。我一直在阅读RandomAccessFile文档,试图解决这个问题,并尝试在线研究。

我尝试过的事情:

  • 使用try-catch块并在每次出现EOFException时捕获(使用try-catch作为条件语句)。它是有效的,但这是一种可怕的做法,效率非常低,因为在我的情况下,大部分时间都是EOF。

  • 使用BufferReader循环并检查位置。我最终遇到了很多问题,并决定必须有更好的方法。

我不想将任何文件复制到另一个或任何其他工作中。我知道必须有一个直接的方法,我似乎无法找到正确的解决方案。

1 个答案:

答案 0 :(得分:0)

你想写一个“tailer”吗?

您需要做的是让一个线程只读取使用FileChannel.size()的数据来检查更多数据。此数据将传递给管道输入。这允许你有一个连续读取管道流的第二个线程,例如使用BufferedReader和阻止需要更多数据的块。