12
votes

Java Process GetinputStream vs. GeetOutPutStream

Je suis un peu confus sur les ruisseaux ... ce qui est lequel?

Simplement, quel flux dois-je utiliser pour attraper la sortie de mon processus et quel flux dois-je utiliser pour donner à mon processus une entrée?


0 commentaires

4 Réponses :


3
votes

Le getOutPutStream est l'entrée to le processus. Le getInputtream est la sortie Lecture du le processus.

Reportez-vous au Javadocs Si c'est utile.


0 commentaires

7
votes

J'ignore toujours les noms et regardez ce qui est retourné. Si votre code a un de sortie , vous pouvez écrire à celui-ci - ce qui signifie que c'est l'entrée pour l'autre processus. Si votre code a un INPUTREAM , vous pouvez lire à partir de celui-ci - ce qui signifie qu'il s'agit de la sortie ou d'erreur pour l'autre processus.

Heureusement, le compilateur vous dira si vous faites la mauvaise chose - vous avez les données que vous souhaitez prouver, vous devez donc l'écrire au flux, ce qui signifie que c'est obtenu < / em> pour être le sortiestream .


0 commentaires

19
votes

Vous ne pouvez lire que dans un introuvable , alors utilisez-le pour attraper la sortie de votre processus.

Vous écrivez à un sortiestream , alors utilisez-le pour donner le processus de votre entrée.

Vous utilisez des noms qui ont un sens dans le contexte du processus généré. Mais les noms d'API ont un sens dans le contexte du processus parent.

Voici un autre conseil: si votre processus écrit à l'erreur standard, assurez-vous de la lire aussi. Si la sortie standard ou les tuyaux d'erreur du sous-processus sont pleins (car votre processus de java parent ne les consommait pas), le processus enfant bloquera sur son écrire () appels.


1 commentaires

Je trouve que cela se confondre très, à ne pas dire imparfait. N'est-ce pas un modèle de conception de base orienté objet pour nommer des méthodes dans le contexte de l'objet qui offre cette méthode?



0
votes

Regardez le doc. Ceci est en effet complètement en train de jouer, comparé à un autre cadre qui en fait de manière «évidente», donc le Doc est votre ami.

public abstract InputStream getInputStream()
> Gets the standarinput stream of the subprocess. Output to the stream is piped into the standard input stream of the process


0 commentaires