2010-11-19 13 views
12

मैं धाराओं के बारे में थोड़ा उलझन में हूं ... कौन सा है?जावा प्रक्रिया getInputStream बनाम getOutputStream

बस, मेरी प्रक्रिया के आउटपुट को पकड़ने के लिए मुझे किस धारा का उपयोग करना चाहिए, और मेरी प्रक्रिया को कुछ इनपुट देने के लिए मुझे किस धारा का उपयोग करना चाहिए?

+4

नफरत इस, वास्तव में – khachik

उत्तर

17

आप केवल InputStream से पढ़ सकते हैं, इसलिए अपनी प्रक्रिया के आउटपुट को पकड़ने के लिए इसका उपयोग करें।

आप OutputStream पर लिखते हैं, इसलिए प्रक्रिया को अपनी इनपुट देने के लिए इसका उपयोग करें।

आप ऐसे नामों का उपयोग कर रहे हैं जो स्पॉन्डेड प्रक्रिया के संदर्भ में समझ में आते हैं। लेकिन एपीआई नाम माता-पिता की प्रक्रिया के संदर्भ में समझ में आता है।

यहां एक और युक्ति है: यदि आपकी प्रक्रिया मानक त्रुटि को लिखती है, तो उसे भी पढ़ना सुनिश्चित करें। यदि उप-प्रक्रिया के मानक आउटपुट या त्रुटि पाइप पूर्ण हैं (क्योंकि आपकी मूल जावा प्रक्रिया उन्हें उपभोग नहीं कर रही है), तो बाल प्रक्रिया write() कॉल पर अवरुद्ध होगी।

+7

भ्रमित मुझे यह बहुत करने के लिए confising, त्रुटिपूर्ण नहीं कहना पाते हैं। क्या यह ऑब्जेक्ट के संदर्भ में विधियों का नाम देने के लिए मूल ऑब्जेक्ट-ओरिएंटेड डिज़ाइन-पैटर्न नहीं है जो इस विधि को प्रदान करता है? – rds

3

GetOutputStream इनपुट प्रक्रिया है। GetInputStream प्रक्रिया से आउटपुट पढ़ा जाता है।

JavaDocs का संदर्भ लें यदि यह उपयोगी है।

7

मैं हमेशा नामों को अनदेखा करता हूं और देखता हूं कि क्या लौटाया गया है। यदि आपके कोड में OutputStream है, तो आप लिख सकते हैं - जिसका अर्थ है कि यह अन्य प्रक्रिया के लिए इनपुट है। यदि आपके कोड में InputStream है, तो आप से पढ़ सकते हैं - जिसका अर्थ है कि यह आउटपुट या अन्य प्रक्रिया के लिए त्रुटि है।

सौभाग्य से, संकलक आप अगर आप गलत बात कर रहे हैं बता देंगे - यदि आप स्वयं provde करना चाहते हैं मिल गया है, तो आप इसे धारा है, जो यह को मिला है इसका मतलब है लिखने के लिए मिल गया है OutputStream बनें।

0

दस्तावेज़ को देखें। यह वास्तव में पूरी तरह से गड़बड़ कर रहा है, अन्य ढांचे की तुलना में जो इसे "स्पष्ट" तरीके से बनाता है, इसलिए डॉक्टर आपका मित्र है।

public abstract OutputStream getOutputStream() 
> Gets the output stream of the subprocess. Output to the stream is piped into the standard input stream of the process 

के लिए भी आसान किया जाना चाहिए था:

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 
संबंधित मुद्दे