Je veux juste créer de nouveaux dossiers dans le dossier des documents de mon application iPhone.Créer un dossier dans le dossier des documents dans les applications iOS
Est-ce que quelqu'un sait comment faire cela?
Appréciez votre aide!
Je veux juste créer de nouveaux dossiers dans le dossier des documents de mon application iPhone.Créer un dossier dans le dossier des documents dans les applications iOS
Est-ce que quelqu'un sait comment faire cela?
Appréciez votre aide!
je fais que de la façon suivante:
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
Je n'aime pas "[chemins objectAtIndex: 0]" parce que si Apple ajoute un nouveau dossier commençant par "A", "B" oder « C ", le dossier" Documents "n'est pas le premier dossier du répertoire.
Mieux:
NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Voir la réponse de Tim. L'utilisation de NSSearchPathForDirectoryiesInDomains est la méthode standard de récupération d'un répertoire Documents d'utilisateurs. –
Si Apple décide de renommer le répertoire Documents en "MyDocuments" (ou similaire), votre approche ne fonctionnera pas non plus. – Mehlyfication
Je n'ai pas assez réputation pour commenter la réponse de Manni, mais [chemins objectAtIndex: 0] est le moyen standard d'obtenir des documents de l'application Répertoire
Étant donné que la fonction NSSearchPathForDiriesiesInDomains a été conçue à l'origine pour Mac OS X, où il peut y avoir plus de qu'un de chacun de ces répertoires, renvoie un tableau de chemins plutôt qu'un seul chemin. Dans iOS, le tableau résultant doit contenir le chemin unique vers le répertoire. Le Listing 3-1 montre une utilisation typique de cette fonction .
Listing 3-1 Obtenir le chemin vers le répertoire de l'application Documents
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Je pense que la façon la plus simple de récupérer le chemin du répertoire de documents est: 'NSString * chemin = [@" ~/Documents "stringByExpandingTildeInPath];' –
Cela fonctionne bien pour moi,
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");
}
Il doit être NSDocumentDirectory au lieu de NSDocumentsDirectory –
code suivant peut aider dans la création de répertoire:
-(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
}
Utilisation:
[self createDirectory:@"MyFolder"];
Résultat:
répertoire créé!
DATAPATH:/var/mobile/Applications/BD4B5566-1F11-4723-B54C-F1D0B23CBC/Documents/MyFolder
Swift 1.2 et iOS 8
Créer un répertoire personnalisé (name = "MyCustomData") dans le répertoire des documents, mais uniquement si le répertoire n'existe pas.
// 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...")
}
}
Le Swift 2 solution:
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)")
}
}
Swift 3 Solution:
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)")
}
}
}
}
Swift 3,0
var error: Error?
var paths: [Any] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
var documentsDirectory: String = paths[0] as? String ?? ""
// Get documents folder
var dataPath: String = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("/MyFolder").absoluteString
if !FileManager.default.fileExists(atPath: dataPath) {
try? FileManager.default.createDirectory(atPath: dataPath, withIntermediateDirectories: false, attributes: nil)
}
e anks pour la réponse, il fonctionne mais il crée le dossier "MyFolder" à côté du dossier de documents de l'application .. pas à l'intérieur. Je ne sais pas pourquoi réellement –
Désolé - était une faute de frappe là - doit ajouter @ "/ MyFolder", pas @ "MyFolder" à un chemin de documents. – Vladimir
oui, j'ai découvert cela, merci pour l'aide :) –