Re: [InputStream]erreur cast
Salut,
Citation:
Envoyé par alex'l
Je ne comprend pas comment à partir d'un InputStream, j'obtiens un ZipFile. Comment puis-je le traiter pour obtenir un FileInputStream et pouvoir le copier? Merci d'avance.
C'est normal...
InputStream est une classe de base qui représente un flux de données, mais elle est abstraite (sa méthode read() n'est pas implémenté) puisque qu'elle ne peut pas être associé directement à un flux de données réel. Il existe pour cela plusieurs classes filles qui permettent de récupérer des données spécialisé depuis différents flux (par exemple, pour récupérer le contenu d'un fichier on utilisera un FileInputStream)...
Et donc lorsqu'une méthode te renvoit un InputStream, elle te renvoit en réalité une classe fille d'InputStream.
Dans ton cas, la méthode getResourceAsStream() doit lire un fichier à l'intérieur d'un fichier Jar. Elle ne peut donc pas retourner un FileInputStream (il faut décompresser seulement le fichier que tu souhaites, et non pas lire le jar). Elle te renvoit donc une classe qui hérite de InputStream et qui sait décompresser le fichier concerné...
Et si tu regarde bien le nom de la classe, tu peux voir un $2 à la fin : java.util.zip.ZipFile$2.
Cela signifie qu'il s'agit d'une classe anonyme créé dans une méthode de ZipFile de la manière suivante :
Code:
1 2 3 4 5
| InputStream monInputStream = new InputStream() {
public int read() {
// Code de lecture/decompression
}
}; |
Donc tu recois bien un InputStream et non pas un ZipFile ;)
a++