2011-03-30 16 views
32

मुझे यकीन नहीं है कि आपको जावा फ़ाइल से सिस्टम इनपुट से कैसे पढ़ा जाना चाहिए।System.in से पढ़ना - जावा

मैं फोन करने के लिए सक्षम होना चाहते हैं java myProg < file

कहाँ फ़ाइल मैं क्या एक स्ट्रिंग के रूप में पढ़ सकते हैं और मुख्य विधि में myProg को दिया जाना चाहते हैं।

कोई सुझाव?

+0

पुस्तक से लिया गया है वास्तव में समस्या क्या है? 1) आप नहीं जानते कि एक तर्क के साथ जावा प्रोग्राम कैसे शुरू करें 2) आप जावा प्रोग्राम के भीतर फ़ाइल को खोलने के बारे में नहीं जानते हैं, जिसमें मुख्य विधि के तर्क के रूप में फ़ाइल नाम है। या 3) – Fortega

+2

@ फोर्टेगा उनमें से कोई भी नहीं। वह सिस्टम इनपुट के बदले में एक फाइल को पाइप करना चाहता है। – corsiKa

+1

@ कभी-कभी 68 मिलियन पृष्ठों को पढ़ने वाला पीटर थोड़ा सा है! – corsiKa

उत्तर

50

में कार्य करता है आप System.in उपयोग कर सकते हैं मानक इनपुट से पढ़ने के लिए है। यह एक कीबोर्ड से इसे दर्ज करने की तरह काम करता है। ओएस फाइल से मानक इनपुट में जा रहा है। :-)

class myProg { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Printing the file passed in:"); 
     while(sc.hasNextLine()) System.out.println(sc.nextLine()); 
    } 
} 
+0

java.util.Scanner – shieldgenerator7

+0

आयात करने के लिए भी मत भूलना, स्कैनर का दस्तावेज़: https://docs.oracle .com/javase/7/docs/api/java/util/Scanner.html – shieldgenerator7

4

उपयोग System.in, यह एक InputStream जो केवल इस उद्देश्य के

16

ठीक है, आप System.in ही पढ़ सकते हैं के रूप में यह एक वैध InputStream है। या फिर भी आप इसे एक BufferedReader में लपेट कर सकते हैं:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
+1

बुफर्ड रीडर में लपेटना एक बुरा विचार लगता है क्योंकि लिनक्स पर (शायद प्रत्येक कॉन्फ़िगरेशन में नहीं) यह आपके प्रोग्राम को कुछ टाइप करने के बाद डेटा नहीं प्राप्त करता है टर्मिनल/पुटी में और "एंटर" दबाएं। प्रोग्राम को आपके द्वारा टाइप किए गए कार्यों को प्राप्त करने के लिए, आपको स्ट्रीम को फ़्लश करने के लिए कुछ विशेष वर्ण भेजने की आवश्यकता है। –

4

तुम बस की तरह आप का उपयोग कर कुंजीपटल इनपुट, उदाहरण के लिए, InputStreamReader या Scanner के लिए होगा System.in से पढ़ा होगा।

1

आप java myProg arg1 arg2 ... कॉल कर सकते हैं:

public static void main (String args[]) { 
    BufferedReader in = new BufferedReader(new FileReader(args[0])); 
} 
-5
class myFileReaderThatStarts with arguments 
{ 

class MissingArgumentException extends Exception{  
     MissingArgumentException(String s) 
    { 
    super(s); 
    } 

    }  
public static void main(String[] args) throws MissingArgumentException 
{ 
//You can test args array for value 
if(args.length>0) 
{ 
    // do something with args[0] 
} 
else 
{ 
// default in a path 
// or 
    throw new MissingArgumentException("You need to start this program with a path"); 
} 
} 
-4

आप शायद कुछ इस तरह की तलाश में।

FileInputStream in = new FileInputStream("inputFile.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
+0

यह काफी पुरानी पोस्ट है। सुनिश्चित करें कि आप बहुत से लोगों द्वारा देखी गई किसी चीज़ पर ध्यान से टिप्पणी कर रहे हैं, इस प्रकार, अधिकतर संभावनाएं पहले से ही कई विशेषज्ञों ने इसे चेक किया है। – smttsp

3

जावा में, सांत्वना इनपुट से पढ़ने System.in द्वारा पूरा किया है। एक चरित्र आधारित धारा है कि कंसोल से जुड़ा हुआ है को प्राप्त करने के एक BufferedReader वस्तु में System.in लपेट दें। BufferedReader एक buffered इनपुट स्ट्रीम का समर्थन करता है। इसका सबसे अधिक इस्तेमाल किया निर्माता यहाँ दिखाया गया है:

BufferedReader(Reader inputReader) 

यहाँ, inputReader धारा है कि के कहने BufferedReader कि किया जा रहा है बनाया से जुड़ा हुआ है। रीडर एक सार श्रेणी है। इसके ठोस उपखंडों में से एक इनपुटस्ट्रीम रीडर, जो बाइट्स को वर्णों में परिवर्तित करता है।

एक InputStreamReader उद्देश्य यह है कि System.in से जुड़ा हुआ है प्राप्त करने के लिए निम्न निर्माता का उपयोग करें:

InputStreamReader(InputStream inputStream) 

क्योंकि प्रणाली।इनपुट ऑब्जेक्ट के किसी ऑब्जेक्ट को संदर्भित करता है, इसका उपयोग इनपुटस्ट्रीम के लिए किया जा सकता है। यह सब एक साथ रखें, कोड की निम्न पंक्ति एक BufferedReader कि कुंजीपटल करने के लिए जुड़ा हुआ है बनाता है:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

के बाद इस बयान निष्पादित करता है, br एक अक्षर आधारित धारा है कि से जुड़ा हुआ है System.in के माध्यम से कंसोल ।

यह Java- The Complete Reference by Herbert Schildt

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