如何等待文件中的数据变为可用而不是获取EOFException

时间:2012-11-21 19:18:02

标签: java multithreading datainputstream eofexception

我正在使用文件显示流内容来缓冲它(因为它可能足够大以将其保存在RAM中)。我有两个线程:第一个从服务器下载文件并将其写入本地存储,第二个读取该文件并显示内容。

问题是,当第二个线程到达文件末尾时,EOFException方法会抛出DataInputStream.readFully()。有没有办法让它等待第一个线程写入足够的数据而不是抛出异常?

3 个答案:

答案 0 :(得分:0)

在您从文件中读取之前检查EOF。或者在阅读声明周围添加try ... catch(EOFException ex)

答案 1 :(得分:0)

同步线程。有一种可能的方法。

答案 2 :(得分:0)

您是否尝试过使用InputStream的available()方法获取可用的字节数,然后使用DataInputStream的read(byte [] b)和byte []返回可用的字节数的长度?我实际上没有试过这个,但似乎它可能会起作用。