2009-06-09 15 views
9

बस एक त्वरित यहाँ।java.io.Console का उपयोग क्यों करें?

क्या java.io.Console उपयोग कर के लाभ के रूप में एक BufferedReader का उपयोग कर System.in के लिए एक InputStreamReader लपेटकर के लिए विरोध कर रहे हैं?

मैं इसका उपयोग क्यों करूं?

किसी भी सलाह के लिए धन्यवाद!

उत्तर

8

आप उपयोगकर्ता को इंटरैक्टिव कमांड लाइन पेश करने के लिए java.io.Console का उपयोग कर सकते हैं। आप अपने आप को System.in के साथ सभी ऐसा कर सकता है, लेकिन आप देख जब इनपुट किया गया था, या readPassword, आदि

+2

अक्षर मिटा रहा है? क्या यह सिस्टम कंसोल द्वारा स्वयं नहीं किया जाता है? – OscarRyz

+2

यदि आप System.in के आस-पास एक BufferedReader का उपयोग करते हैं तो आपको पात्रों या किसी भी सामान को मिटाने की "सूचना" की आवश्यकता नहीं है।कंसोल का उपयोग करने के लिए readPassword एक अच्छा कारण है। – Chochos

+2

धन्यवाद दोस्तों, आप सही हैं। मैंने अक्षर मिटाए जाने के बारे में हिस्सा हटा दिया। –

10

क्योंकि यह कोड आपके लिए पहले से लिखा गया है ... पहिया को फिर से आविष्कार करने की आवश्यकता नहीं है। संभावना है, आप इसे पहले से कहीं ज्यादा बेहतर नहीं होने जा रहे हैं।

+0

यह सच है! तो क्या आप कह रहे हैं कि मुझे अपनी परियोजना से जुड़ी अपनी सामान्य सूची जेनेरिक प्रकारों को विकसित नहीं करना चाहिए ?! : पी –

6

जैसी चीजों को लागू करने के java.io.Console is finally here!

सबसे लोकप्रिय सुविधा में से एक के लिए अनुरोध देखें होता हाल के दिनों में जे 2 एसई कंसोल समर्थन को बेहतर बनाने का अनुरोध किया गया है और इको अक्षम के साथ पासवर्ड दर्ज करने का एक तरीका प्रदान करता है। डेवलपर्स इस सुविधा को 4050435 जानते हैं क्योंकि यह कुछ समय के लिए शीर्ष 25 आरएफई सूची में स्कूलिंग कर रहा है।

3

java.io.Console केवल तब काम करता है जब आप एक एसटीडीआईएन/एसटीडीओयूटी को पुनर्निर्देशित किए बिना कमांड लाइन से जावा प्रोग्राम शुरू करते हैं।

सिस्टम.in पर कंसोल के साथ मैं जो मुख्य लाभ देखता हूं वह यह है कि आपके पास readPassword() विधि है, जो उपयोगकर्ता द्वारा टाइप किए गए वर्णों को प्रतिबिंबित नहीं करेगी (मुझे सिस्टम के साथ ऐसा करने का कोई तरीका नहीं मिला। में)।

आपके पास रीडलाइन() भी है जो एक प्रॉम्प्ट प्रस्तुत करेगा और एक पंक्ति को पढ़ेगा। आपको अपना खुद का LineNumberReader बनाना नहीं है।

लेकिन, यदि आप चाहते हैं कि आपका जावा प्रोग्राम किसी फ़ाइल या पाइप से रीडायरेक्ट होने पर एसटीडीआईएन से पढ़ने में सक्षम हो, तो आपको अभी भी System.in का उपयोग करना होगा।

2

एक और चाल मुझे यकीन है कि आपको कंसोल के साथ नहीं मिलेगा - मैंने अपना स्वयं का इनपुट और आउटपुट स्ट्रीम बनाया और सिस्टम.in/out को उनके साथ बदल दिया। धारा के मेरा कार्यान्वयन लॉग फ़ाइल में संलग्न है और साथ ही स्क्रीन पर प्रतिबिंबित करता है।

जब मैंने अपने गरीब व्यक्ति की "डीबग जानकारी" चालू की, तो मुझे यह भी बता सकता था कि सिसाउट किस प्रोग्राम/लाइन से आया था (हालांकि यह धीमा था। इसने अपवाद बनाया और उचित स्टैक प्रविष्टि की जांच की ताकि डिफ़ॉल्ट रूप से बंद था)

-2

java.io.Console उपयोगकर्ता से रनटाइम पर इनपुट लेने और पढ़ने के लिए उपयोग किया जाता है और आउटपुट उपयोगकर्ता से इनपुट को प्रोसेस करने के बाद प्रदर्शित होते हैं।

अधिक और विस्तृत जानकारी के लिए https://www.examsmyantra.com/article/58/java/java-io---console-input-and-output

संबंधित मुद्दे