2010-07-19 15 views
5

मेरे पास एक बहुत ही सरल कंसोल एप्लिकेशन है जो एक टेक्स्ट फ़ाइल बनाता है।स्ट्रीमवाइटर कैरिज रिटर्न लिख रहा है?

StreamWriter writer = File.CreateText("c:\\temp.txt"); 
foreach (blah...) 
{ 
    writer.Write(body.ToString() + "\n"); 
    writer.Flush(); 
} 
writer.Close(); 

ग्राहक दावा कर रहा है कि प्रत्येक पंक्ति के अंत में कैरिएज रिटर्न हैं: नीचे दिए गए कोड का संक्षिप्त है। ये कैरिज रिटर्न कहां से आ रहे हैं?

अद्यतन: वीएस बाइनरी संपादक और नोटपैड ++ में खोलने के बाद, 0d 0a की कोई घटना नहीं थी। मैं ग्राहक के पास वापस जा रहा हूँ।

+2

यह जांचने के लिए फ़ाइलों को पढ़ने के लिए वे क्या उपयोग कर रहे हैं? – ChrisF

+5

आप कहते हैं "ग्राहक दावा कर रहा है ..." क्या आपने स्वयं को चेक किया है? –

+0

दान, इन विशेष वर्णों को देखने के लिए एक अच्छी उपयोगिता क्या है? –

उत्तर

3

विजुअल स्टूडियो बाइनरी एडिटर में फ़ाइल खोलें (File.Open.File, ओपन बटन पर डाउन-एरो पर क्लिक करें, ओपन के साथ चुनें ... और बाइनरी संपादक चुनें), और 0D बाइट्स देखें। कोई नहीं, मौजूद हैं तो या तो:

  • अपने ग्राहक के लिए एक लाइन फ़ीड और एक गाड़ी वापसी के बीच अंतर नहीं बता सकता,

  • अपने प्रसारण विधि की राह में फ़ाइल को संशोधित किया गया है। क्या कोई एफ़टीपी बाइनरी/एएससीआई मिस्चैच चल रहा है?

वहाँ 0D बाइट्स हैं, तो वे अपने body चर में मौजूद हैं।

+2

या क्लाइंट एक उपकरण/फ़ंक्शन के साथ फ़ाइल खोल रहा है जो स्वचालित रूप से \ n \ r \ n के साथ कई विंडोज पाठ संपादक ऐसा करते हैं। –

+0

यह अच्छा है। मुझे वीएस बाइनरी एडिटर में खोले जाने पर लाइनों के बीच 0 डी 0 ए की घटना मिली लेकिन नोटपैड ++ के साथ नहीं। तो यह शरीर चर में मौजूद होना चाहिए? मैं अपना मूल पोस्ट w/कोड अपडेट करूंगा। –

+0

एफवाईआई, ग्राहक को पता नहीं था कि वे किस बारे में बात कर रहे थे क्योंकि फ़ाइल में कोई कैरिज रिटर्न नहीं था। –

1

"\n" प्रत्येक write कॉल के अंत में

संपादित करें: मैं जानता हूँ कि यह एक नई लाइन, नहीं एक गाड़ी वापसी है, लेकिन मैं कोई पैसा ग्राहक दोनों के बीच उलझन में हो रही है यकीन है और यह वास्तव में इस है इससे समस्या उत्पन्न हो रही है

+6

यह एक लाइन फीड है, कैरिज रिटर्न नहीं। – BoltClock

+4

'\ n' एक लाइन फ़ीड है। '\ r' कैरिज रिटर्न है। – ChrisF

+0

@ बोल्टक्लॉक, @ क्रिसिस - मुझे पता है, लेकिन जब तक शरीर के अंत में एक कैरिज रिटर्न नहीं होता है, तो यह वही होगा जो ग्राहक – w69rdy

1

अपने कोड में आप एक लाइन फ़ीड (\ n) डालते हैं।

आपका ग्राहक कैरिज रिटर्न (\ r) के बारे में बात कर रहा है। हो सकता है कि आपका ग्राहक कैरिज रिटर्न प्रति लाइन फीड ले रहा हो?

0

क्या ग्राहक सीआर और एलएफ के बीच अंतर करता है? फ्लश() आवश्यक है? यदि आप फ्लश नहीं करते हैं तो क्या आप बफर ओवरलोड कर रहे हैं?

जब तक आपके पास बड़ी मात्रा में टेक्स्ट न हो, तब तक आपको टेक्स्ट को प्रारूपित करने के लिए स्ट्रिंगबिल्डर बनाने से अधिक उपयोग मिल सकता है जैसा कि आप इसे \ n, \ r, \ t या जो कुछ भी चाहते हैं उसे सीधे स्ट्रीमवाइटर में पम्प करना ।

0

यदि प्रत्येक body स्ट्रिंग का पहला अक्षर '\ r' था, तो यह आपको समझाएगा कि आप क्या देख रहे हैं।

0

क्या आपने जांच की है कि body उन पात्रों के साथ भी समाप्त हो रहा है जिन्हें आप मुद्रित नहीं करना चाहते हैं? यह अन्य संभावित समस्या स्रोत है।

3

मैंने आपके कोड का परीक्षण किया।

alt text http://img830.imageshack.us/img830/5443/18414385.png

कोड आपके द्वारा पोस्ट की किसी भी गाड़ी रिटर्न (0D) केवल नई लाइनों (0A) नहीं है। कुछ और कैरिज रिटर्न बना रहा है या ग्राहक नहीं जानता कि कैरिज रिटर्न वास्तव में क्या है।

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