2010-09-15 13 views
7

मैं सोच रहा था कि ग्रोवी से फ़ाइल में नई लाइन लिखने का कोई साफ तरीका है या नहीं। मैं निम्नलिखित स्क्रिप्ट है:ग्रोवी में नई लाइन को अच्छी तरह प्रिंट कैसे करें?

new File("out.txt").withWriter{ writer -> 
    for(line in 0..100) { 
      writer << "$line" 
    } 
} 

मैं writer << "$line\n" या writer.println("$line") इस्तेमाल कर सकते हैं, लेकिन अगर वहाँ किसी भी तरह से मेरे लिए नई लाइन संलग्न करने के लिए << ऑपरेटर का उपयोग करने के लिए है मैं wondring गया था।

उत्तर

5

आशुलिपि आप मेटा प्रोग्रामिंग इस्तेमाल कर सकते हैं कि कार्यक्षमता बनाने के लिए है है। < < ऑपरेटर के व्यवहार को बदलने का एक आसान समाधान कस्टम श्रेणी का उपयोग करना होगा।

उदाहरण:

class LeftShiftNewlineCategory { 
    static Writer leftShift(Writer self, Object value) { 
     self.append value + "\n" 
    } 
} 
use(LeftShiftNewlineCategory) { 
    new File('test.txt').withWriter { out -> 
     out << "test" 
     out << "test2"  
    } 
} 

यहाँ श्रेणियों के बारे में अधिक: http://docs.codehaus.org/display/GROOVY/Groovy+Categories

+0

यह अच्छी चीजें है। मैंने कुछ दिनों पहले ग्रोवी के साथ शुरुआत की है और उस सुविधा से अवगत नहीं था। मुझे इसे देखना होगा! धन्यवाद xlson। –

+0

आपका स्वागत है! :) मौजूदा एपीआई को बढ़ाने के लिए ग्रोवी में मेटा प्रोग्रामिंग का उपयोग करने के कई अलग-अलग तरीके हैं। श्रेणियों (आईएमएचओ) के साथ अच्छी बात यह है कि वे स्कॉप्ड हैं ताकि आप अपने सभी कार्यक्रमों में व्यवहार नहीं बदल सकें। यदि आप इसके बारे में अधिक जानना चाहते हैं तो ग्रोवी मेटा-प्रोग्रामिंग के लिए इस परिचय को देखें: http://www.ibm.com/developerworks/java/library/j-pg06239.html – xlson

0

आप की कोशिश की

writer << "$line" << "\n" 

कौन सा के लिए

writer << "$line" 
writer << "\n" 
5

यह एक अच्छा विचार सही लाइन विभाजक के लिए प्रणाली में पूछने के लिए है इन ऑपरेटिंग सिस्टम के बीच बदल सकते हैं के रूप में।

writer << "Line 1" + System.getProperty("line.separator") + "Line 2" 
+0

कुछ सिस्टमों की आवश्यकता होती है \ n और दूसरों को \ r \ एन। यह कहना मुश्किल है, इसलिए सिस्टम को इस उदाहरण के अनुसार इसे समझने दें। – Spider

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