>>>     String fichier = props.getProperty("FICHIER","");
>>>     InputStream is = new StringBufferInputStream(fichier);
>>>     ZipInputStream zip = new ZipInputStream(is);
>>>     ...
>>>     Comment puis-je me passer du StringBufferInputStream ?


>> Il y a la une grosse confusion entre les caracteres (char, String, 
>> Reader) et les octets (byte, InputStream). En particulier rien ne 
>> garantit que la chaine fichier contienne un zip valide (car il a pu y 
>> avoir transformation pendant l'encodage de la String).


>> Mais cette discussion releve d'un mauvais enonce du probleme. Que 
>> contient la variable fichier ? Le nom du fichier ou son contenu ? 
 
> Son contenu...

Alors ma remarque s'applique. Il n'est pas possible de stocker dans une 
String un contenu binaire. J'avais lance la discussion sur cette liste 
il y a qqs mois, mais je pense que new String(byte[]).getBytes() est ne 
renvoie pas un resultat identique, du a l'encodage.

Quel est l'encodage utilise ?

Sinon une mauvaise solution est:
new ZipInputStream(new ByteArrayInputStream(fichier.getBytes());

Mais le mieux est d'encoder le contenu du fichier avant de le mettre 
dans les proprietes. Ou encore mieux, d'utiliser un byte[] plutot qu'une 
chaine.

Guillaume.

Répondre à