27 votes

Comment faire un répertoire iOS ?

Ok,

J'ai donc une application Cydia que je dois mettre à jour. Je sais qu'avec les applications Cydia, elles n'ont pas de dossier Documents, il faut donc en créer un. Et voici comment je l'ai fait avant sous iOS 4 (ce qui ne fonctionne pas sous iOS 5) :

mkdir("/var/mobile/Library/APPNAME", 0755);
mkdir("/var/mobile/Library/APPNAME/Documents", 0755);

NSString *foofile = @"/var/mobile/Library/APPNAME/Documents/database.db";
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];

if (fileExists == TRUE) {
    NSLog(@"already exists");
} else {
    NSLog(@"doesn't exists");
    NSFileManager *fileManager = [[NSFileManager defaultManager]autorelease];
    NSError *error;
    NSString *documentDBFolderPath = @"/var/mobile/Library/APPNAME/Documents/database.db";

    NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.db"];
    [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];

}

J'ai également inclus le code qui copie le fichier de la base de données dans ce dossier, aussi. Cela ne fonctionne pas (même lorsque je crée le dossier manuellement via SSH).

Aidez-nous ! Merci.

50voto

syclonefx Points 1797

Voici la méthode que j'ai utilisée pour créer des répertoires

-(void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath
{
    NSString *filePathAndDirectory = [filePath stringByAppendingPathComponent:directoryName];
    NSError *error;

    if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory
                                   withIntermediateDirectories:NO
                                                    attributes:nil
                                                         error:&error])
    {
        NSLog(@"Create directory error: %@", error);
    }
}

4voto

chown Points 25161

Essayez d'utiliser createDirectoryAtURL:withIntermediateDirectories:attributes:error: .

NSFileManager Référence de la classe :

createDirectoryAtURL:withIntermediateDirectories:attributes:error:

Crée un répertoire avec des attributs donnés dans le chemin spécifié.

Paramètres

url - Une URL de fichier qui spécifie le répertoire à créer. Si vous souhaitez spécifier un chemin d'accès relatif, vous devez définir le répertoire de travail actuel avant de créer le répertoire correspondant. répertoire de travail actuel avant de créer l'objet NSURL correspondant. Ce paramètre ne doit pas être nul.

createIntermediates - Si YES cette méthode crée tous les répertoires parents inexistants inexistants dans le cadre de la création du répertoire en url. Si NO , Cette méthode échoue si l'un des répertoires parent intermédiaires n'existe pas. n'existe pas. Cette méthode échoue également si l'un des éléments du chemin intermédiaire intermédiaire correspond à un fichier et non à un répertoire.

attributes - Les attributs de fichier pour le nouveau répertoire et tout répertoire intermédiaire nouvellement créé. répertoires intermédiaires nouvellement créés. Vous pouvez définir les numéros de propriétaire et de groupe, les autorisations de fichiers et la date de modification. Si vous spécifiez nil pour ce paramètre paramètre ou omettez une valeur particulière, une ou plusieurs valeurs par défaut sont valeurs par défaut sont utilisées comme décrit dans la discussion. Pour obtenir une liste des clés que vous pouvez inclure dans ce dictionnaire, reportez-vous aux listes de la section "Constantes" (page 54) les constantes globales utilisées comme clés dans le dictionnaire des attributs. Certaines certaines clés, telles que NSFileHFSCreatorCode et NSFileHFSTypeCode, ne ne s'appliquent pas aux répertoires.

error - En entrée, un pointeur vers un objet d'erreur. Si une erreur se produit, ce pointeur est placé sur un objet d'erreur réel contenant les informations informations sur l'erreur. Vous pouvez spécifier nil pour ce paramètre si vous ne voulez pas l'information sur l'erreur.

Valeur de retour
YES si le le répertoire a été créé ou existe déjà ou NO si une erreur s'est produite.

3voto

Jef Points 1468

Vérifiez Référence de la classe NSFileManager . Pour créer des dossiers, vous devez createDirectoryAtPath:withIntermediateDirectories:attributes:error:

1voto

Joel Teply Points 261

En Swift, renvoie vrai si existe ou a été créé.

func ensureDirectoryExists(path:String) -> Bool {

    if !NSFileManager.defaultManager().fileExistsAtPath(path) {
        do {
            try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil)
        } catch {
            print(error)
            return false
        }
    }
    return true
}

0voto

carmin Points 309

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X