2009-09-12 17 views
5

मेरी इनपुट फ़ाइल मान लीजिए शामिल हैं:मैं जावा में स्वरूपित इनपुट कैसे पढ़ूं?

3 4 5 6 7  8 
9 


10 

मैं थोड़ी देर के पाश चलाने के लिए और पूर्णांकों को पढ़ने के लिए, ताकि मैं क्रमशः से प्रत्येक यात्रा के बाद 3,4,5,6,7,8 और 10 मिल जाएगा चाहते हैं पाश।

यह C/C++ में नहीं बल्कि जावा में करने के लिए बहुत आसान है ...

मैं इस कोड की कोशिश की:

try { 
      DataInputStream out2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); 

      int i=out2.read(); 
      while(i!=-1){ 
       System.out.println(i); 
       i=out2.readInt(); 
      } 

    } catch (IOException ex) { 

    } 

और मैं क्या मिलता है:

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

मैं इस फ़ाइल से जावा में पूर्णांक कैसे पढ़ूं?

+1

:

निम्नलिखित के साथ ऊपर के उदाहरण में Scanner इन्स्टेन्शियशन बदलें DataInputStream द्विआधारी पढ़ने, पाठ नहीं करने के लिए है। –

+0

तो, क्या जावा समाधान सी ++ या कठिन से आसान हो गया? –

+0

मेरे लिए, सी में इनपुट पढ़ना अभी भी आसान है, विशेष रूप से जहां फ़ाइल में सभी प्रकार के डेटा होते हैं - संख्याएं, तार, फ्लोट इत्यादि – Lazer

उत्तर

15

एक Scanner वर्ग और उसके nextInt विधि का उपयोग कर सकते हैं:

Scanner s = new Scanner("3 4  5 6"); 

while (s.hasNext()) { 
    System.out.println(s.nextInt()); 
} 

आउटपुट:

3 
4 
5 
6 

मूल रूप से डिफ़ॉल्ट रूप से, Scanner वस्तु कोई श्वेत रिक्ति पर ध्यान नहीं देगा, और अगले टोकन प्राप्त होगा।

Scanner class as a constructor जो वर्ण धारा के स्रोत के रूप में InputStream लेता है, इसलिए कोई FileInputStream का उपयोग कर सकता है जो टेक्स्ट का स्रोत खोलता है। FYI करें

Scanner s = new Scanner(new FileInputStream(new File(filePath))); 
+0

बहुत बहुत धन्यवाद! यह काम करता हैं! – Lazer

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