ios - puedo - donde esta icloud en iphone
Obtenga la ruta del archivo por nombre de archivo desde el directorio de documentos ios (3)
Puedes buscar en el directorio de documentos así:
NSString *searchFilename = @"hello.pdf"; // name of the PDF you are searching for
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory];
NSString *documentsSubpath;
while (documentsSubpath = [direnum nextObject])
{
if (![documentsSubpath.lastPathComponent isEqual:searchFilename]) {
continue;
}
NSLog(@"found %@", documentsSubpath);
}
EDITAR:
También puedes usar NSPredicate. Si hay muchos miles de archivos en el directorio de documentos, esto podría fallar con un error de falta de memoria.
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.lastPathComponent == %@", searchFilename];
NSArray *matchingPaths = [[[NSFileManager defaultManager] subpathsAtPath:documentsDirectory] filteredArrayUsingPredicate:predicate];
NSLog(@"%@", matchingPaths);
En mi aplicación descargo archivos PDF que se almacenan en el directorio "Documento" en diferentes subcarpetas.
Ahora tengo un nombre de archivo para el que quiero obtener su ruta en el directorio "Documento", pero el problema es que no sé la subcarpeta exacta en la que se almacena ese archivo.
Entonces, ¿hay algún método que me dé la ruta del archivo por el nombre del archivo? Hay un método que funciona para el paquete principal:
(NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension
No quiero recorrer cada carpeta, lo cual es una forma tediosa.
Gracias.
Swift 2.2 bastante simple:
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first! as NSString
let plistPath = paths.stringByAppendingPathComponent("someFile.plist")
Tendrás que caminar el árbol para encontrar el archivo; no hay equivalente a -pathForResource: ofType que funciona en el directorio ~ / Documents.