2015-03-19 7 views
10

एक फ़ाइल को देखते हुए, हम, का उपयोग कर तार की एक धारा में बदलने के कर सकते हैं उदाहरण के लिए,System.in/System.console() से जावा 8 स्ट्रीम कैसे बनाएं?

Stream<String> lines = Files.lines(Paths.get("input.txt")) 

हम एक समान तरीके से मानक इनपुट से लाइनों की एक धारा का निर्माण कर सकते हैं?

+0

भी देखें http://stackoverflow.com/questions/29611661/how-to-make-scanner -स्ट्रिंग्स-इन-ए-स्ट्रीम-इन-जावा – Vadzim

उत्तर

20

kocko के जवाब और होल्गर की टिप्पणी का एक संकलन:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
Stream<String> stream = in.lines().limit(numberOfLinesToBeRead); 
1

आमतौर पर मानक इनपुट लाइन द्वारा लाइन पढ़ा जाता है, तो आप जो भी कर सकते हैं वह सभी पठन रेखा को संग्रह में संग्रहीत करता है, और उसके बाद Stream बनाता है जो उस पर चल रहा है।

उदाहरण के लिए:

List<String> allReadLines = new ArrayList<String>(); 

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
String s; 
while ((s = in.readLine()) != null && s.length() != 0) { 
    allReadLines.add(s); 
} 

Stream<String> stream = allReadLines.stream(); 
+3

यदि आपके पास 'बुफर्ड रीडर' है तो 'संग्रह' में लाइनों को स्टोर करने की आवश्यकता नहीं है [स्ट्रीम 'प्राप्त करें] (http://docs.oracle। com/JavaSE/8/docs/api/जावा/कब/BufferedReader.html # lines--)। बड़ी समस्या यह है कि इंटरैक्टिव कंसोल में आमतौर पर फाइल का अंत नहीं होता है ... – Holger

+0

अच्छा है। इस नए परिचय विधि को नहीं पता था। धन्यवाद, @ होल्गर। :) –

+0

ग्रेट, BufferedReader.lines इस उत्तर में अधिकांश वर्बोसिटी को खत्म कर देगा। यदि रेखाओं को पढ़ने के अंक को जाना जाता है, तो in.limit (numberOfLines) को यहां काम करना चाहिए –

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