2016-03-01 1 views
0

Je souhaite télécharger un fichier (pdf, doc, docx etc.) dans NSFileManager à partir d'une URL spécifique. Plus tard, lorsque l'utilisateur tape sur le même lien, je veux récupérer le fichier de NSFileManager. Voici le code que je l'ai fait:Ecriture et récupération de fichiers à partir de NSDocumentDirectory iOS

- (void)checkIfFileExist { 

    NSString *path1; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    path1 = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Content-Directory"]; 
    path1 = [path1 stringByAppendingPathComponent:@"sample.pdf"]; 
    NSLog(@"The read path is %@", path1); 
    if ([[NSFileManager defaultManager] fileExistsAtPath:path1]) 
    { 
     //File exists 
     NSData *file1 = [[NSData alloc] initWithContentsOfFile:path1]; 
     if (file1) 
     { 


     } 
    } 
    else 
    { 
     NSURL *url = [NSURL URLWithString:@"http://fzs.sve-mo.ba/sites/default/files/dokumenti-vijesti/sample.pdf"]; 
     NSData *urlData = [NSData dataWithContentsOfURL:url]; 
     NSString *path; 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Content-Directory"]; 
     path = [path stringByAppendingPathComponent:@"sample.pdf"]; 
     NSLog(@"The written path is %@", path); 
     [[NSFileManager defaultManager] createFileAtPath:path 
               contents:urlData 
               attributes:nil]; 
    } 
} 

Maintenant ici chaque fois que je suis en train de récupérer le fichier du gestionnaire de fichiers à condition que le fichier existe toujours me retourner FAUX. Les chemins d'accès à l'écriture et à la lecture du fichier sont identiques à ceux que j'ai vérifiés sur la console. Toute erreur que j'ai faite?

+0

votre code postal pour enregistrer le fichier. – Avi

+0

@Avi: c'est là. la condition d'autre. –

+0

Avez-vous vérifié si l'écriture a réussi? Le fichier apparaît-il dans le bac à sable? Vous pouvez vérifier via la fenêtre Appareils dans Xcode. – Avi

Répondre

0

Ajouter ce

if (![[NSFileManager defaultManager] fileExistsAtPath:path]){[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];} 

après

path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Content-Directory"]; 

dans votre part et d'autre remplacer

[[NSFileManager defaultManager] createFileAtPath:path contents:urlData attributes:nil];` with `[urlData writeToFile:path atomically:YES];