Je viens de rencontrer un comportement particulier avec getResourceAsInputStream que j'espérais que quelqu'un pourrait faire la lumière.Pourquoi getResourceAsStream avec une chaîne vide retourne un InputStream vide?
En passant cette méthode, le nom d'une ressource inexistante renvoie null, comme je le pensais. Toutefois, en lui passant une chaîne vide ou espace-rempli renvoie réellement un InputStream valide avec zéro octets en elle. Seules les chaînes vides ou remplies d'espace semblent le faire; Les espaces comme "\ t" ou "\ n" donneront une valeur nulle.
Est-ce un comportement prévu? Si oui, quel est son but?
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
Bonne explication! Il est à noter qu'il s'agit d'une anomalie de 'FileURLConnection' qui n'est pas partagée par' JarURLConnection'; courir exactement le même code, mais avec les classes emballées dans un pot, ne produira pas une liste (selon mes tests, au moins). –
Aha, ça a du sens! Merci pour l'explication. –