2012-01-10 5 views
5

fileExistsAtPath मौजूद निर्देशिका के लिए NO लौटा रहा है।fileExistsAtPath कोई निर्देशिका के लिए कोई रिटर्न नहीं देता है जो

NSURL *newDirectoryPath = ... // path does not begin with a tilda 
           // and is created using URLByAppendingPathComponent:isDirectory: 

BOOL directoryExists = [self.fileManager fileExistsAtPath:[newDirectoryPath absoluteString]]; 
if (NO == directoryExists) 
{ 
    BOOL ret = [self.fileManager moveItemAtURL:self.currentPresentationDirectoryPath toURL:newDirectoryPath error: &err]; 
    // ret is YES, err is nil 

    directoryExists = [self.fileManager fileExistsAtPath:[newDirectoryPath absoluteString]]; 
} 

हालांकि निर्देशिका सिर्फ moveItemAtURL साथ सफलतापूर्वक बना दिया गया, fileExistsAtPath अभी भी नहीं लौटा रहा है: यदि मैं निम्नलिखित कोड है।

फाइल सिस्टम की वर्तमान स्थिति या फाइल सिस्टम पर एक विशेष फ़ाइल के आधार पर व्यवहार विधेय के लिए सिफारिश नहीं है प्रयास कर रहा है:

मैं प्रलेखन जानते हैं कि यह कहते हैं। ऐसा करने से फ़ाइल सिस्टम रेस स्थितियों के मामले में अजीब व्यवहार हो सकता है।

लेकिन मैं समझने के लिए यहां मुद्दा यह है चाहता हूँ - अगर मैं एप्लिकेशन को बंद करने और इसे पुन: लॉन्च तो उपरोक्त कोड में fileExistsAtPath के लिए पहली जांच अभी भी नहीं लौटा रहा है, भले ही निर्देशिका पहले से सफलतापूर्वक दौरान बनाया गया था कोड के पूर्व निष्पादन, और मैं ऑर्गनाइज़र में निर्देशिका देख सकता हूं, और मैं निर्देशिका की सामग्री आदि से सफलतापूर्वक पढ़ सकता हूं।

पीएस क्या fileExistsAtURL है: विधि?

+0

एनएसएलओजी जिस मार्ग का आप उपयोग कर रहे हैं और सुनिश्चित करें कि यह वही है जो आपको लगता है। –

+0

इस मशीन पर परीक्षण नहीं कर सकता है, लेकिन यह [newDirectoryPath absoluteString] के बजाय [newDirectoryPath पथ] नहीं होना चाहिए? –

+0

@ जोचिम इस्क्सन - वह था-धन्यवाद – Gruntcakes

उत्तर

19

यदि आपके पास NSURL है, -absoluteURLNSFileManager के लिए उपयोग करने योग्य पथ नहीं लौटाएगा। यह file:// उपसर्ग के साथ पूर्ण यूआरएल वापस करेगा। उदा। file:///path/to/file

इसके बजाय -path जैसी अन्य विधि का उपयोग करने का प्रयास करें। जांचें कि क्या यह काम करता है।

NSURL *myURL = /* some url */; 
NSString *myPath; 
BOOL exi; 

myPath = [myURL path]; 
exi = [[NSFileManager defaultManager] fileExistsAtPath:myPath]; 
if(!exi) { 
    NSLog(@"File does not exist"); 
} 
संबंधित मुद्दे