लिखेंगे


92

वास्तव में आसान सवाल है, लेकिन यह एप्पल के डॉक्स में स्पष्ट नहीं लगता है।

एक फ़ाइल पर मौजूदा डेटा को अधिलेखित करेगा , आदि के writeToFile:atomically:लिए ?NSDataNSArray

जवाबों:


212

हाँ। यह।

30 वर्ण सीमा को पारित करने के लिए यहां कुछ वर्ण दिए गए हैं।


20
आप इसे परमाणु रूप से करते हैं या नहीं, इससे कोई फर्क नहीं पड़ता; या तो मामले में, फ़ाइल नए डेटा के साथ पूरी तरह से अधिलेखित हो जाएगी।
बीजे होमर

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

1
@MottiShneor आप -writeToURL का उपयोग कर सकते हैं: विकल्प: त्रुटि: इसके बजाय, जिसमें त्रुटि पैरामीटर है।
बीजे होमर

7

विधि writeToFile:atomically: हमेशा की परवाह किए बिना, हमेशा की तरहatomically: या ना के रूप में ।

से सूचना एप्पल डॉक्स (NSData, अनुभाग "सहेजा जा रहा डेटा"):

NSData वर्ग और इसके उप-वर्ग अपनी सामग्री को डिस्क पर जल्दी और आसानी से सहेजने के लिए तरीके प्रदान करते हैं। डेटा हानि के जोखिम को कम करने के लिए, ये विधियाँ परमाणु रूप से डेटा को बचाने का विकल्प प्रदान करती हैं। परमाणु लिखता है कि डेटा या तो अपनी संपूर्णता में सहेजा गया है, या यह पूरी तरह से विफल रहता है। परमाणु लेखन डेटा को एक अस्थायी फ़ाइल में लिखने से शुरू होता है। यदि यह लेखन सफल होता है, तो विधि अस्थायी फ़ाइल को उसके अंतिम स्थान पर ले जाती है।

यदि फ़ाइल मौजूद है, तो जाँच के बारे में कोई भी शब्द नहीं।

उदाहरण के लिए, डॉक्सcopyItemAtPath:toPath:error: में विधि के लिए (NSFileManager, अनुभाग चर्चा) विशेष रूप से ऐसी जाँच के बारे में लिखा गया है:

यदि dstPath पर समान नाम वाली फ़ाइल पहले से मौजूद है, तो यह विधि प्रतिलिपि प्रयास को रोक देती है और एक उपयुक्त त्रुटि देती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.