मेरे अनुप्रयोगों में से एक का उपयोग उन फ़ाइलों को पढ़ने (और केवल पढ़ने के लिए) है जो उपयोग में हो सकते हैं।वर्तमान में उपयोग की जाने वाली फ़ाइल को कैसे पढ़ा जाए, जैसे विंडोज़ इसे कॉपी करते समय करता है?
लेकिन, जब एक फ़ाइल जो पहले से ही में खोला जाता है, उदाहरण के लिए, पढ़ना, माइक्रोसॉफ्ट वर्ड, इस आवेदन फेंकता एक System.IO.IOException
:
प्रक्रिया फ़ाइल '< फ़ाइल नाम यहाँ >' उपयोग नहीं कर सकते क्योंकि यह किया जा रहा है एक और प्रक्रिया द्वारा प्रयोग किया जाता है।
फ़ाइल को पढ़ने के लिए इस्तेमाल किया कोड है:
using (Stream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
{
// Do stuff here.
}
बेशक
, क्योंकि फ़ाइल पहले से ही प्रयोग किया जाता है, इस अपवाद की उम्मीद है।
अब, अगर मैं एक नए स्थान पर फ़ाइल की प्रतिलिपि करने ऑपरेटिंग सिस्टम से पूछते हैं, तो इसे पढ़ने के लिए, यह काम करता है:
string tempFileName = Path.GetTempFileName();
File.Copy(fileName, tempFileName, true);
// ↓ We read the newly created file.
using (Stream stream = new FileStream(tempFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete))
{
// Do stuff here.
}
क्या File.Copy
का जादू जो पहले से ही इस्तेमाल किया फ़ाइल को पढ़ने के लिए अनुमति देता है एक आवेदन द्वारा, और विशेष रूप से अस्थायी प्रतिलिपि के बिना फ़ाइल पढ़ने के लिए इस जादू का उपयोग कैसे करें?
आपका कोड मेरे लिए ठीक काम करता है। क्या यह संभव है कि आप अपने ऐप में FileAccess.Write निर्दिष्ट कर रहे हों, भले ही यह आपके स्निपेट में नहीं है? –
सीरान कीटिंग के अनुसार आपके मूल कोड के ऊपर मेरे लिए काम करता है। "// यहां सामान करो" में आप क्या कर रहे हैं। –