我正在使用文件来缓冲它来显示流内容(因为它可能足够大以将其保存在 RAM 中)。我有两个线程:第一个线程从服务器下载文件并将其写入本地存储,第二个线程读取该文件并显示内容。
问题是,当第二个线程到达文件末尾时,EOFException
从DataInputStream.readFully()
方法中抛出。有没有办法让它在第一个线程写入足够的数据而不是抛出异常时等待?
同步线程。有一种可能的方法。
在读取文件之前检查 EOF。或者在 read 语句周围放一个try ... catch(EOFException ex)
。
您是否尝试过使用 InputStream 的 available() 方法来获取可用字节数,然后使用 DataInputStream 的 read(byte[] b) 和 byte[] 可用返回的字节数的长度? 我实际上还没有尝试过这个,但似乎它可能会起作用。