var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
writer.Write(....);
यदि फ़ाइल में पहले टेक्स्ट था और नया लिखित टेक्स्ट फ़ाइल में पहले से था, तो मैं कैसे सुनिश्चित कर सकता हूं कि फ़ाइल में अप्रचलित पिछली सामग्री को छोटा कर दिया गया है?फ़ाइलस्ट्रीम और स्ट्रीमवाइटर - लिखने के बाद फ़ाइल के शेष को कैसे छोटा करें?
ध्यान दें कि फ़ाइल को ट्रंकेट मोड में खोलना इस मामले में एक विकल्प नहीं है। जब मैं FileStream
ऑब्जेक्ट प्राप्त करता हूं तो फ़ाइल पहले से ही खुली है। उपर्युक्त कोड केवल स्ट्रीम की गुणों को चित्रित करने के लिए है।
संपादित
नीचे इस सवाल का जवाब विस्तार करते हुए, समाधान है:
var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
writer.Write(....);
writer.Flush();
fs.SetLength(fs.Position);
}
जवाब/समाधान कोड मेरे लिए गलत लग रहा है: पढ़ना fs.Position ** से पहले ** writer.Flush या writer.Dipose (बुलाया था) आप वास्तविक बाइट गिनती नहीं देंगे। आपके पास भाग्य है क्योंकि जब स्ट्रीम लिखा जाता है तो धारा स्वचालित रूप से फैलती है, लेकिन आपकी फ़ाइल 2 लम्बाई अपनाने के कारण खंडित अनावश्यक हो सकती है जो 1 लिखने के लिए लागू होती है। – springy76