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