InputStream ne se réinitialise pas le début
InputStream data = realResponse.getEntity().getContent();
byte[] preview = new byte[100];
data.read(preview, 0, 100);
//Maintenant, je veux me référer à l'InputStream plus tard, mais je le veux depuis le début du flux, pas de 100 octets. J'ai essayé mark()
à 100, puis reset()
après j'ai lu les 100 premiers octets, mais cela ne fonctionne pas non plus.
Des idées? Probablement une erreur stupide..tout simplement pas le voir.
OriginalL'auteur Du3 | 2011-07-16
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez
mark()
de la java.io.InputStream objets, vous devriez vérifier avec lemarkSupported()
méthode si votre InputStream effectivement en charge l'utilisation de la marque. Selon l'API de laInputStream
classe ne possède pas, mais la java.io.BufferedInputStream classe. Peut-être que vous devez intégrer vos flux à l'intérieur d'unBufferedInputStream
objet comme:docs.oracle.com/javase/8/docs/api/java/io/... "la méthode reset() dans InputStream n'est rien d'autre que de jeter IOException()" 😉
OriginalL'auteur Progman
Si le
InputStream
supporte marque (vous pouvez vérifier avec lemarkSupported()
méthode), puis la suivante devrait fonctionner:Cependant, être conscient que
data.read(preview, 0, 100)
est pas garanti à lire 100 octets en une seule fois, il peut lire de moins en moins.Je ne peux pas répondre sans savoir ce que l'
realResponse
est la classe (et la version de la bibliothèque).oui, vous pouvez. markSupported() vous indique que.
OriginalL'auteur Lucero