Bienvenido al fantástico mundo de los Heisenbug

DD
Aunque en este caso es bastante común y no se considera como tal, ya que si no cierras de forma correcta un OutputStream (no pones que hace appendText pero imagino que será almacenar en un OutputStream) te puede pasar que los datos no se guarden.
En cuanto a la pregunta en sí, un InputStream no tiene más datos cuando los bytes leídos son 0.
Lo que tienes que asegurarte es que en algún momento le hagas close al OutputStream, porque si no lo haces puedes perder writes, ya que se escriben de forma asíncrona. Si no puedes saber cuando vas a cerrar el fichero lo que tienes que hacer por lo menos es hacer un flush después de una serie de writes, para asegurarte que esos writes se escriben de forma inmediata.