2012-02-02 16 views
17

सहित आईओएस कॉपी निर्देशिकाएं मैं आईओएस दस्तावेज़ फ़ोल्डर के साथ काम कर रहा हूं जिसे "temp" कहा जाता है जो उपनिर्देशिका आवंटित करता है जिसमें दूरस्थ यूआरएल से फ़ाइलों को डाउलोड किया जाता है। अब मुझे "temp" निर्देशिका और इसकी सभी सामग्री को "मुख्य" फ़ोल्डर में कॉपी करने की आवश्यकता है (पहले बनाए गए मौजूदा को ओवरराइट करें)। मुझे पता है कि फाइलों को कैसे संभालना है, लेकिन पूरी निर्देशिका को कैसे कॉपी करें? धन्यवादउपनिर्देशिका

उत्तर

30

आप उसी NSFileManager विधियों का उपयोग कर सकते हैं जिन्हें आप जानते हैं और निर्देशिकाओं के लिए भी प्यार करते हैं। उदाहरण के लिए:

if ([[NSFileManager defaultManager] fileExistsAtPath:pathToTempDirectoryInMain]) { 
    [[NSFileManager defaultManager] removeItemAtPath:pathToTempDirectoryInMain error:nil]; 
} 
NSError *copyError = nil; 
if (![[NSFileManager defaultManager] copyItemAtPath:pathToTempDirectory toPath:pathToTempDirectoryInMain error:&copyError]) { 
    NSLog(@"Error copying files: %@", [copyError localizedDescription]); 
} 
+0

महान, धन्यवाद !! – Jaume

+0

इस पर, क्योंकि यह आसानी से स्पष्ट नहीं हो सकता है, आपको इस प्रक्रिया को चलाने वाली प्रक्रिया पर उपयोगकर्ता अनुमतियों की आवश्यकता है। – Volomike

5

NSFileManager तरीकों removeItemAtPath:error:, removeItemAtURL:error:, copyItemAtPath:toPath:error:, और copyItemAtURL:toURL:error: तरीकों निर्देशिका संभाल।

आप moveItemAtPath:toPath:error: और moveItemAtURL:toURL:error: पर भी देख सकते हैं।

+0

मैंने फ़ाइल प्रबंधक की copyItemAtPath विधि का उपयोग किया। हां यह फाइल कॉपी करता है लेकिन यह उस स्तर पर सभी निर्देशिका छोड़ देता है। मैं चाहता हूं कि डीआईआर संरचना में सब कुछ कॉपी किया जाए। कोई संकेतक? – Alix

+0

@Alix चाहे मैं 'copyItemAtPath' या' moveItemAtPath' चलाता हूं, यह आपके द्वारा निर्दिष्ट पथनाम द्वारा निर्देशिका बनाता है यदि यह अस्तित्व में नहीं है। इसलिए, अगर मैंने/tmp/src बनाया है और फिर/tmp/dest में कॉपी करना चाहते हैं, या इसे jtc27 के समाधान को चलाते हैं, तो यह स्वचालित रूप से किसी भी पिछले/tmp/dest को हटा देगा और फिर इसे कॉपी करेगा/tmp/गंतव्य। एक और उदाहरण के रूप में, मान लें कि मेरे पास/tmp/alix और/home/alix/दस्तावेज़ जैसे फ़ोल्डर हैं और मैं वहां एक एलीक्स फ़ोल्डर रखना चाहता हूं। ठीक है - मैंने बस स्रोत/tmp/alix और dest को सेट किया है। टू/होम/एलिक्स/दस्तावेज़/एलिक्स। यह स्वचालित रूप से आपके लिए एलिक्स फ़ोल्डर बना देगा। – Volomike

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