¿Cómo prueban ustedes un InputStream vacío? Sé que InputStream está diseñado para funcionar con recursos remotos, por lo que no puede saber si está allí hasta que realmente lo lea. No puedo usar read() porque la posición actual cambiaría y usar mark() y reiniciar parece ser inapropiado.Prueba de InputStream vacío en Java
El problema es que a veces uno no puede probar si read() devuelve -1, porque si tiene una secuencia y una biblioteca de terceros la usa, debe probar si está vacía antes de enviarla allí .
Por InputStreams vacíos que significan estos new ByteArrayInputStream(new byte[0])
Parece la versión correcta de lo que John (a continuación) estaba buscando, aunque ligeramente diferente, ya que devuelve un principio int, pero el mismo principio. Sin embargo, me gustaría volver a redactarlo, porque la forma en que lo tiene escrito aquí hace que 'disponible()' parezca un método estático, que no lo es. Y si fuera un método estático, sería bastante inútil a menos que tomara una entrada, pero simplemente no es estático. – gnomed
Chicos. Estaba esperando un poco más ... primero, ¿de verdad crees que no conozco uno de los pocos métodos de la interfaz inputStream? En segundo lugar, las implementaciones de IS implementan este método de manera diferente y dicen que no debes confiar en él ... – lisak
@Edgar Parece que básicamente tienes tres opciones. 1) Trust available(), que se implementa de forma un poco diferente, pero para todo lo que sigue la API de Java es básicamente lo que se desea 2) Cargarlo en un Reader y verificar si está listo() 3) mark() y reset() . –