J'ai la déclaration suivante: p>
J'aimerais imprimer le contenu de ce flux d'entrée, mais je ne connais pas la taille de ce flux. Comment dois-je lire ce flux et l'imprimer? P> DataGuTStream est = Nouveau DataGuTretstream (process.getInputStream ()); code> p>
4 Réponses :
appeler est.Read (octet []) code>
réparez-le, passant un tampon pré-alloué (vous pouvez continuer à réutiliser le même tampon). La fonction renvoie le nombre d'octets réellement lus, ou -1 à la fin du flux (auquel cas, arrêtez):
byte[] buffer = new byte[100]; int numberRead = 0; do{ numberRead = is.read(buffer); if (numberRead != -1){ // do work here } }while (numberRead == buffer.length); Keep reading a set buffer size in a loop. If the return value is ever less than the size of the buffer you know you have reached the end of the stream. If the return value is -1, there is no data in the buffer.DataInputStream.read
DataGuTretstream code> est quelque chose d'obsolète. Je vous recommande d'utiliser
scanner code> à la place.
Scanner sc = new Scanner (process.getInputStream());
while (sc.hasNextXxx()) {
System.out.println(sc.nextXxx());
}
Pas sûr que DatainPhatStream est obsolète, mais il est redondant ici.
Il est commun à tous les flux, que la longueur n'est pas connue à l'avance. Utilisation d'une standard Mais je suppose que vous avez enveloppé une standard Le Javadoc pour Si vous utilisez Conseil: Soyez InputStream code> La solution habituelle consiste simplement à appeler
lis code> jusqu'à ce que
-1 code> est renvoyé. p>
InputStream code> avec un
datagnutstream code> pour une bonne raison: pour analyser Data binaires forts>. (Remarque:
Scanner code> est uniquement destiné aux données textuelles.) P>
DataUnputStream code> vous montre que cette classe a deux manières différentes d'indiquer EOF - chaque méthode renvoie
-1 code> ou jette un
eofexception code>. Une règle de base est la suivante: p>
introuvable code> utilise la convention "renvoyer
-1 code>" ", LI>
introuvable code> jette le
eofexception code>. li>
ul>
lishorthort code> par exemple, lisez jusqu'à ce qu'une exception soit lancée, si vous utilisez "Lire ()", faites-le jusqu'à ce que
-1 code> est renvoyé. p>
DataGuTretstream code> - une règle de base peut casser. P>
+1 the Tutoriel élabore, "Notez que Datastreams code> détecte une condition de fin de fichier en attrapant
eofException code>, au lieu de tester une valeur de retour invalide ".
Je pensais que j'ai fait la distinction entre Dis et est claire. Mais j'ai édité la réponse en fonction de votre contribution. Tnx
AHA, méthodes implémentant Datainput code>, qui sont pas i> héritées de
introuvable code>, lancez
eofexception code>. Merci de clarifier.
Si vous utilisez uniquement un tampon, l'utilisation d'un DataGuThetStream n'ajout d'aucune valeur.