আইওএস অ্যাপ্লিকেশনগুলিতে নথি ফোল্ডারের ভিতরে একটি ফোল্ডার তৈরি করুন


151

আমি কেবল আমার আইফোন অ্যাপের ডকুমেন্টস ফোল্ডারে নতুন ফোল্ডার তৈরি করতে চাই।

কেহ যে কিভাবে করবেন জানেন না?

আপনার সাহায্য তারিফ করা!

উত্তর:


326

আমি নিম্নলিখিত পদ্ধতিতে এটি করি:

NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"];

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder

1
উত্তরের জন্য ধন্যবাদ, এটি কাজ করে তবে এটি অ্যাপটির নথি ফোল্ডারের পাশে "মাইফোর্ডার" ফোল্ডার তৈরি করে .. এটির ভিতরে নয়। আসলে কেন জানি না
মিনা মিকেল

3
দুঃখিত - সেখানে একটি টাইপো ছিল - অবশ্যই অবশ্যই "" / মাইফোল্ডার "যুক্ত করতে হবে, @" মাইফোল্ডার "নথির পথে নয়।
ভ্লাদিমির

2
আপনি তৃতীয় লাইনটি এনএসএসটিং * ডেটাপথে = [ডকুমেন্টসডাইরেক্টরি স্ট্রিংবাই অ্যাপেন্ডিং স্ট্রিং: @ "/ মাইফোল্ডার"] তে পরিবর্তন করতে চাইতে পারেন; যেহেতু এনএসএস সার্চপথফোর্ডডাইরেক্টরিআইডোমাইনগুলি পিছনে স্ল্যাশ দেয় না।
আন্দ্রেয়াস

13
আমি কোডটি আরও সঠিক "স্ট্রিংবাই অ্যাপেন্ডিংপ্যাথকম্পোন্ট" ব্যবহার করার জন্য স্থির করেছি যা ইনপুট স্ট্রিংয়ের "/" থাকুক না কেন সঠিক কাজ করে।
কেন্ডাল হেলস্টেটার জেলনার

আমাকে অনেক সাহায্য করেছে .. ধন্যবাদ ভ্লাদিমির
ক্যাথি

14

মান্নির উত্তরে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই, তবে [পথের অবজেক্টটিআইটিএনডেক্স: 0] হ'ল অ্যাপ্লিকেশনটির নথিপত্র প্রাপ্তির মানক উপায়

http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW6

কারণ এনএসএস সার্চপথফোর্ডডাইরেক্টরিসআইনডোমাইনস ফাংশনটি মূলত ম্যাক ওএস এক্সের জন্য ডিজাইন করা হয়েছিল, যেখানে এই ডিরেক্টরিগুলির মধ্যে একটিরও বেশি থাকতে পারে, এটি একক পাথের পরিবর্তে পাথের অ্যারে প্রদান করে। আইওএস-এ, ফলস্বরূপ অ্যারেটিতে ডিরেক্টরিতে একক পথ থাকা উচিত। 3-1 তালিকাবদ্ধকরণ এই ফাংশনটির একটি সাধারণ ব্যবহার দেখায়।

তালিকা 3-1 অ্যাপ্লিকেশন এর নথি ডিরেক্টরিতে পথ পাচ্ছেন

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

1
আমি মনে করি নথির ডিরেক্টরি পাথ পুনরুদ্ধারের সহজতম উপায় হ'ল:NSString* path = [@"~/Documents" stringByExpandingTildeInPath];
S1LENT WARRIOR

14

সুইফট 3 সমাধান:

private func createImagesFolder() {
        // path to documents directory
        let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
        if let documentDirectoryPath = documentDirectoryPath {
            // create the custom folder path
            let imagesDirectoryPath = documentDirectoryPath.appending("/images")
            let fileManager = FileManager.default
            if !fileManager.fileExists(atPath: imagesDirectoryPath) {
                do {
                    try fileManager.createDirectory(atPath: imagesDirectoryPath,
                                                    withIntermediateDirectories: false,
                                                    attributes: nil)
                } catch {
                    print("Error creating images folder in documents dir: \(error)")
                }
            }
        }
    }

9

আমি "[পাথ অবজেক্টএটিআইডেক্স: 0]" পছন্দ করি না কারণ অ্যাপল যদি "এ", "বি" ওডার "সি" দিয়ে শুরু করে একটি নতুন ফোল্ডার যুক্ত করে তবে "ডকুমেন্টস"-ফোল্ডারটি ডিরেক্টরিটির প্রথম ফোল্ডার নয়।

উত্তম:

NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder

8
টিমের উত্তর দেখুন। এনএসএস অনুসন্ধানপথফোর্ডডাইরেক্টরিআইএনডোমাইনগুলি ব্যবহার করে কোনও ব্যবহারকারী নথি ডিরেক্টরি পুনরুদ্ধার করার মানক উপায়।
টিম সোয়েস্ট

1
যদি অ্যাপল ডকুমেন্টস ডিরেক্টরিটিকে "মাই ডকুমেন্টস" (বা অনুরূপ) নামকরণ করার সিদ্ধান্ত নেয়, আপনার পদ্ধতির কাজও কার্যকর হবে না।
মেহলিফিকেশন

8

সুইফট 2 সমাধান:

let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
if !NSFileManager.defaultManager().fileExistsAtPath(documentDirectoryPath) {
        do {
            try NSFileManager.defaultManager().createDirectoryAtPath(documentDirectoryPath, withIntermediateDirectories: false, attributes: nil)

        } catch let createDirectoryError as NSError {
            print("Error with creating directory at path: \(createDirectoryError.localizedDescription)")
        }

    }

5

এটি আমার পক্ষে ভাল কাজ করে,

NSFileManager *fm = [NSFileManager defaultManager];
NSArray *appSupportDir = [fm URLsForDirectory:NSDocumentsDirectory inDomains:NSUserDomainMask];
NSURL* dirPath = [[appSupportDir objectAtIndex:0] URLByAppendingPathComponent:@"YourFolderName"];

NSError*    theError = nil; //error setting
if (![fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES
                           attributes:nil error:&theError])
{
   NSLog(@"not created");
}

এটি এনএস ডকুমেন্টস ডিরেক্টরীটির পরিবর্তে এনএসডকুমেন্ট ডিরেক্টরী হওয়া উচিত
প্রদীপ রেড্ডি কিপা

3

সুইফট 4.0

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
// Get documents folder
let documentsDirectory: String = paths.first ?? ""
// Get your folder path
let dataPath = documentsDirectory + "/yourFolderName"
if !FileManager.default.fileExists(atPath: dataPath) {
    // Creates that folder if not exists
    try? FileManager.default.createDirectory(atPath: dataPath, withIntermediateDirectories: false, attributes: nil)
}

নতুন তৈরি ডিরেক্টরিতে ডাটা কীভাবে লিখবেন?
লগার

1

নিম্নলিখিত কোডটি ডিরেক্টরি তৈরি করতে সহায়তা করতে পারে:

-(void) createDirectory : (NSString *) dirName {

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Fetch path for document directory
dataPath = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:dirName];

NSError *error;

if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) {
    NSLog(@"Couldn't create directory error: %@", error);
}
else {
    NSLog(@"directory created!");
}

NSLog(@"dataPath : %@ ",dataPath); // Path of folder created

}

ব্যবহার:

[self createDirectory:@"MyFolder"];

ফলাফল :

ডিরেক্টরি তৈরি!

ডেটাপথ: / ভার / মোবাইল / অ্যাপ্লিকেশনস / বিডি 4 বি 5566-1 এফ 11-4723-বি 54 সি-এফ 1 ডি 0 বি 23 সিবিসি / ডকুমেন্টস / মাইফোল্ডার


1

সুইফট 1.2 এবং আইওএস 8

ডকুমেন্ট ডিরেক্টরিতে কাস্টম ডিরেক্টরি (নাম = "মাইক্রোস্টম ডেটা") তৈরি করুন তবে কেবল ডিরেক্টরি উপস্থিত না থাকলে।

// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String

// create the custom folder path
let myCustomDataDirectoryPath = documentDirectoryPath.stringByAppendingPathComponent("/MyCustomData")

// check if directory does not exist
if NSFileManager.defaultManager().fileExistsAtPath(myCustomDataDirectoryPath) == false {

    // create the directory
    var createDirectoryError: NSError? = nil
    NSFileManager.defaultManager().createDirectoryAtPath(myCustomDataDirectoryPath, withIntermediateDirectories: false, attributes: nil, error: &createDirectoryError)

    // handle the error, you may call an exception
    if createDirectoryError != nil {
        println("Handle directory creation error...")
    }

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.