2011-12-22 17 views
17

मैंने अपना कोड बदल दिया ताकि मैं केवल एक फ़ाइल को पढ़ सकूं। अब मुझे File.WriteAllText का उपयोग करने में परेशानी हो रही है क्योंकि मेरा FileStream और StreamReader किसी स्ट्रिंग में परिवर्तित नहीं किया गया है।मैं StreamReader को स्ट्रिंग में कैसे परिवर्तित करूं?

static void Main(string[] args) 
{ 
    string inputPath = @"C:\Documents and Settings\All Users\Application Data\" 
        + @"Microsoft\Windows NT\MSFax\ActivityLog\OutboxLOG.txt"; 
    string outputPath = @"C:\FAXLOG\OutboxLOG.txt"; 

    var fs = new FileStream(inputPath, FileMode.Open, FileAccess.Read, 
             FileShare.ReadWrite | FileShare.Delete); 
    string content = new StreamReader(fs, Encoding.Unicode); 

    // string content = File.ReadAllText(inputPath, Encoding.Unicode); 
    File.WriteAllText(outputPath, content, Encoding.UTF8); 
} 
+0

'StreamReader'' स्ट्रिंग' नहीं है। आपके द्वारा टिप्पणी की गई 'File.ReadAllText' विधि का उपयोग करके' स्ट्रिंग 'प्राप्त होगा। –

+0

ऐसा लगता है कि आप सिर्फ एक फ़ाइल की सामग्री को दूसरी निर्देशिका में कॉपी कर रहे हैं। फ़ाइल की प्रतिलिपि सीधे आउटपुट निर्देशिका में क्यों नहीं बनाते? – docmanhattan

+0

अरे, खुशी है कि आप अपनी आखिरी पोस्ट पर मेरी टिप्पणी को डिस्फर करने में सक्षम थे ... अपने फाइलस्ट्रीम पर 'उपयोग' करें ... आपको डिस्क IO कर रहे किसी भी समय कोशिश करने/पकड़ने की आवश्यकता है ... जैसा कि आप पहले से ही कर चुके हैं देखा, बहुत सारी संभावित समस्याएं हैं। इसके अलावा, इन StreamReader.ReadToEnd() उत्तरों की आवश्यकता है जो आपको चाहिए। – rfmodulator

उत्तर

39

StreamReader के ReadToEnd() विधि का उपयोग करें::

string content = new StreamReader(fs, Encoding.Unicode).ReadToEnd(); 

यह, ज़ाहिर है पहुँच के बाद StreamReader बंद करने के लिए महत्वपूर्ण है,

यह मेरा कोड है। इसलिए, using कथन समझ में आता है, जैसा कि keyboardP और अन्य द्वारा सुझाया गया है।

string content; 
using(StreamReader reader = new StreamReader(fs, Encoding.Unicode)) 
{ 
    content = reader.ReadToEnd(); 
} 
+8

मैं धाराओं के लिए 'उपयोग' कथन का उपयोग करने की सलाह दूंगा। – albertjan

+0

और स्ट्रिंग concatenation के बजाय Path.Combine (...) का उपयोग, मुझे पता है। मैंने – Adam

+3

को बदलकर केवल उस पंक्ति को छोड़कर मेरे जवाब से शोर हटा दिया क्योंकि मेरा जवाब स्वीकार कर लिया गया है, मैंने इसे @ कीबोर्डपी के उत्तर में एक उपयोग कथन शामिल करने के लिए बढ़ा दिया है। StreamReader – Adam

11
string content = String.Empty; 

using(var sr = new StreamReader(fs, Encoding.Unicode)) 
{ 
    content = sr.ReadToEnd(); 
} 

File.WriteAllText(outputPath, content, Encoding.UTF8); 
+3

+1। – Jason

+1

वास्तव में, एक महत्वपूर्ण बिंदु का निपटान करने के लिए उपयोग कथन जोड़ने के लिए – Adam

3

उपयोग StreamReader.ReadToEnd() विधि।

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

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