Acabo de encontrar un comportamiento peculiar con getResourceAsInputStream que esperaba que alguien pudiera arrojar algo de luz.¿Por qué getResourceAsStream con una cadena vacía devuelve un InputStream vacío?
Pasando este método, el nombre de un recurso inexistente devuelve nulo, como era de esperar. Sin embargo, pasarle una cadena vacía o llena de espacio en realidad devuelve un InputStream válido con cero bytes en él. Solo cadenas vacías o llenas de espacio parecen hacer esto; espacios en blanco como "\ t" o "\ n" darán como resultado un nulo.
¿Tiene este comportamiento previsto? Si es así, ¿cuál es su propósito?
this.class.getResourceAsStream("no_such_resource"); // returns null
this.class.getResourceAsStream(""); // returns an InputStream
this.class.getResourceAsStream(" "); // returns an InputStream
this.class.getResourceAsStream("\t"); // returns null
¡Gran explicación! Vale la pena señalar que esta es una peculiaridad de 'FileURLConnection' que no es compartida por' JarURLConnection'; ejecutar exactamente el mismo código, pero con las clases empaquetadas en un contenedor, no generará una lista (de acuerdo con mis pruebas, al menos). –
Aha, ¡eso tiene sentido! Gracias por la explicación. –