2011-12-12 11 views
11

कोई नई लाइन नहीं बनाई गई है, मैं अपाचे पीओआई कक्षाओं का उपयोग करके एक टेक्स्ट फ़ाइल में एमएमएसजी फ़ाइल को डीकोड करने का प्रयास कर रहा हूं।प्रिंटराइटर println:

printlnPrintWriter की विधि को छोड़कर सब कुछ ठीक काम करता है: यह एक नई लाइन नहीं बनाता है।

यह सिर्फ प्रत्येक वाक्य को एक दूसरे के बाद सीधे जोड़ता है। नीचे झलकी कोड का परिणाम

 
"De: textPara: " iso 
"De: " 
"Para: " 

मैं कई मशीनों पर कोड की कोशिश की है: यह अपने स्थानीय बिल्ला instalation (Windows मशीन) पर काम करता है, लेकिन एक बिल्ला या एक सोलारिस मंच पर Weblogic instalation पर विफल रहता है। मैंने सोचा कि इसमें एन्कोडिंग एल्गोरिदम के साथ कुछ करना है, इसलिए मैंने Printwriter के चरण में उपयोग किया, जो एन्कोडिंग आईएसओ -885 9 -1 को इंगित करता है, लेकिन कोई भाग्य नहीं।

कोई विचार?

try { 
     byte [] msgByte = Base64.decodeBase64(msgBase64); 

     InputStream inputMsg = new ByteArrayInputStream(msgByte); 
     msg = new MAPIMessage(inputMsg); 

     /* 1. Transform MSG to TXT. */ 
     try { 
      txtOut = new PrintWriter(outputMsg); 
      try { 
       String displayFrom = msg.getDisplayFrom(); 
       txtOut.println("De: "+displayFrom); 
      } catch (ChunkNotFoundException e) { 
       _logger.info("Error extrayendo displayFrom: "+e); 
      } 
      try { 
       String displayTo = msg.getDisplayTo(); 
       txtOut.println("Para: "+displayTo); 
      } catch (ChunkNotFoundException e) { 
       _logger.info("Error extrayendo displayTo: "+e); 
      } 

     } finally { 
     if(txtOut != null) { 
      txtOut.close();} 
     else { 
      _logger.error("No se ha podido parsear el mensaje."); 
     } 

     } 
+2

आप क्या प्रिंट कर रहे हैं? एक कंसोल, एक लॉग फ़ाइल, एक जीयूआई ऐप में एक टेक्स्ट बॉक्स, एचटीएमएल? – nos

+1

क्या आप प्रत्येक पंक्ति के बीच एक अतिरिक्त लाइन जोड़ने की कोशिश कर रहे हैं। प्रत्येक बार जब आप एक पंक्ति लिखते हैं तो सही 'txtOut.println()' आज़माएं। –

+0

वास्तव में आउटपुट क्या है, इसके अलावा आप सटीक आउटपुट क्या कर रहे हैं? – Peter

उत्तर

21

बदलें निम्नलिखित:

txtOut.print("De: "+displayFrom + "\r\n"); 
txtOut.print("Para: "+displayTo + "\r\n"); 

यह कैसे PrintWriter.println() ऑपरेटिंग सिस्टम के आधार पर उत्पन्न करता है Line break से संबंधित है। यूनिक्स सिस्टम के लिए एलएफ (\ n), विंडोज के लिए सीआर + एलएफ (\ r \ n) है।

सूचना कैसे मैं "\ r \ n" जोड़ा जिसका अर्थ है सीआर + वामो और प्रिंट() का इस्तेमाल किया println() के बजाय। इस तरह उत्पन्न लाइन ब्रेक प्लेटफॉर्म पर निर्भर नहीं है।

डुप्लिकेट से बचने के लिए आप अपनी कक्षा में निम्न विधि भी जोड़ सकते हैं और सीधे txtOut.print() को कॉल करने के बजाय इस कस्टम println() को कॉल कर सकते हैं।

private static final String LINE_SEPARATOR = "\r\n"; 

public void println(String str) { 
    txtOut.print(str + LINE_SEPARATOR); 
} 

इस तरह से आप बस फोन println() विधि।

+7

"\ r \ n" पर टैग करने के बजाय एक सुरक्षित विधि परिभाषित और उपयोग करने के लिए हो सकती है: सार्वजनिक स्थैतिक स्ट्रिंग newline = System.getProperty ("line.separator"); – BlueVoid

+0

समस्या + + r \ n प्रिंट करने के लिए println बदलने में समस्या हल हो गई। बहुत बहुत धन्यवाद। – nicBBB

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