मेरे पास एक ऐसा एप्लिकेशन है जो पुराने डेटा के लिए कुछ फ़ाइलों को देख रहा है। यह सुनिश्चित करने के लिए कि हम अच्छी परियोजनाओं को भ्रष्ट नहीं करते हैं, मैं फ़ाइलों को अस्थायी स्थान पर कॉपी कर रहा हूं। कुछ निर्देशिका जो मैं जांच रहा हूं वे स्रोत-कोड निर्देशिका हैं, और उनके पास .svn फ़ोल्डर्स हैं। हम अपने कोड को प्रबंधित करने के लिए सबवर्जन का उपयोग करते हैं।नव निर्मित फाइलों पर अनधिकृत एक्सेस अपवाद
एक बार जब मैंने सभी फाइलों के माध्यम से खोज की है, तो मैं temp कैश को हटाना चाहता हूं। आसान लगता है, है ना?
किसी कारण से, मेरी सभी .svn निर्देशिका कैश से नहीं हटाए जाएंगी। वे ऐप को दुर्घटनाग्रस्त करते हैं।
कारणों से (यहां जाने के लिए बहुत गहराई), मुझे अस्थायी फ़ोल्डर का उपयोग करना है, इसलिए केवल "मूल फ़ाइल स्कैन करें" राजनीतिक कारणों से प्रश्न से बाहर है।
मैं एक्सप्लोरर में जा सकता हूं और उन्हें हटा सकता हूं। कोई बात नहीं। कोई चेतावनी नहीं बस हटा देता है। लेकिन कोड "{एक्सेस} तक पहुंच से इनकार कर दिया गया है।" मैं इस के साथ अपने wits अंत में हूँ, तो किसी भी मदद की सराहना की जाएगी।
जबकि मैंने आपके स्वच्छता के लिए फ़ंक्शन को एक छोटा सा सरल बना दिया है, तो कोड वास्तव में इस सरल के बारे में है।
List<string> tmpCacheManifest = new List<string>();
string oldRootPath = "C:\\some\\known\\directory\\";
string tempPath = "C:\\temp\\cache\\";
foreach (string file in ListOfFilesToScan)
{
string newFile = file.Replace(oldRootPath, tempPath);
// This works just fine.
File.Copy(file, newFile);
tmpCacheManifest.add(newFile);
}
// ... do some stuff to the cache to verify what I need.
// Okay.. I'm done.. Delete the cache.
foreach (string file in tmpCacheManifest)
{
// CRASH!
File.Delete(file);
}
* अद्यतन *: अपवाद UnauthorizedAccessException है। पाठ "पथ तक पहुंच" है: \ temp \ cache \ some-sub-dirs \ .svn \ प्रविष्टियां 'अस्वीकार कर दी गई हैं। "
यह XP, XP प्रो और Windows 7.
के तहत होता है * अद्यतन मेरी मान्यता के 2 * कोई भी तोड़फोड़ फाइलों को देखने के लिए प्रयास करता है। हालांकि, मुझे उनकी ज़रूरत है। वह राजनीतिक बकवास का हिस्सा है। मुझे यह दिखाना है कि प्रत्येक फाइल की प्रतिलिपि बनाई गई थी ... wheter यह स्कैन किया गया था या नहीं।
और मुझे एहसास है कि फ़ाइल के लिए सामान्य संदिग्ध क्या हैं। डेलेट। मुझे एहसास है कि अनधिकृत एक्सेस अपवाद का क्या अर्थ है। मेरे पास पहुंच नहीं है। यह एक ब्रेनर है। लेकिन मैंने बस फाइल कॉपी की है। मैं नहीं फ़ाइल तक पहुंच कैसे प्राप्त कर सकता हूं?
* अपडेट 3 * उत्तर "केवल पढ़ने के लिए" ध्वज में था। यहाँ कोड मैं इसे ठीक करने के लिए प्रयोग किया जाता है:
foreach (string file in ListOfFilesToScan)
{
string newFile = file.Replace(oldRootPath, tempPath);
// This works just fine.
File.Copy(file, newFile);
//// NEW CODE ////
// Clear any "Read-Only" flags
FileInfo fi3 = new FileInfo(fn);
if ((fi3.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
fi3.Attributes = (FileAttributes)(Convert.ToInt32(fi3.Attributes) - Convert.ToInt32(FileAttributes.ReadOnly));
}
tmpCacheManifest.add(newFile);
}
// ... do some stuff to the cache to verify what I need.
अपवाद क्या है? एक फ़ाइल लॉक हो सकता है। –
फ़ाइल। डेलेटे कम से कम सात अलग-अलग अपवाद प्रकार फेंक सकता है। आप कौन सी हो रही है? –
@ रोबोटो, क्या आपका मतलब नहीं है: डब्ल्यूटीई? TCBAFL? –