sincronizar seguridad pasar google descargar cómo copia con como archivos ios iphone xcode webview nsfilemanager

ios - descargar - pasar copia de seguridad de google drive a icloud



¿Cómo comprobar si existe un archivo en la carpeta Documentos? (5)

Swift 2.0

Esto es cómo verificar si el archivo existe usando Swift

func isFileExistsInDirectory() -> Bool { let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) let documentsDirectory: AnyObject = paths[0] let dataPath = documentsDirectory.stringByAppendingPathComponent("/YourFileName") return NSFileManager.defaultManager().fileExistsAtPath(dataPath) }

Tengo una aplicación con Compra In-App, que cuando el usuario compra algo, descarga un archivo html en la carpeta Documentos de mi aplicación.

Ahora debo verificar si este archivo HTML existe, así que si es verdadero, cargue este archivo HTML, de lo contrario, cargue mi página html predeterminada.

¿Como puedo hacer eso? Con NSFileManager no puedo salir de mainBundle ..


Swift 3:

let documentsURL = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)

... le da un archivo URL del directorio de documentos. Lo siguiente comprueba si hay un archivo llamado foo.html:

let fooURL = documentsURL.appendingPathComponent("foo.html") let fileExists = FileManager().fileExists(atPath: fooURL.path)

C objetivo:

NSString* documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString* foofile = [documentsPath stringByAppendingPathComponent:@"foo.html"]; BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];


Apple recomienda no confiar en el método fileExistAtPath :. A menudo es mejor tratar de abrir un archivo y lidiar con el error si el archivo no existe.

Referencia de clase de NSFileManager

Nota: no se recomienda intentar predecir el comportamiento según el estado actual del sistema de archivos o un archivo en particular en el sistema de archivos. Hacerlo puede causar un comportamiento extraño o condiciones de carrera. Es mucho mejor intentar una operación (como cargar un archivo o crear un directorio), verificar errores y manejar esos errores con gracia de lo que es tratar de averiguar con anticipación si la operación tendrá éxito. Para obtener más información sobre las condiciones de carrera del sistema de archivos, consulte "Condiciones de carrera y operaciones de archivos seguros" en la Guía de codificación segura.

Fuente: Referencia de API para desarrolladores de Apple

De la guía de codificación segura.

Para evitar esto, los programas a menudo se aseguran de que no exista un archivo temporal con un nombre específico en el directorio de destino. Si tal archivo existe, la aplicación lo elimina o elige un nuevo nombre para el archivo temporal para evitar conflictos. Si el archivo no existe, la aplicación abre el archivo para escribir, porque la rutina del sistema que abre un archivo para escribir crea automáticamente un nuevo archivo si no existe ninguno. Un atacante, al ejecutar continuamente un programa que crea un nuevo archivo temporal con el nombre apropiado, puede (con un poco de persistencia y algo de suerte) crear el archivo en el espacio entre cuando la aplicación verificó que el archivo temporal no existiera. y cuando lo abre para escribir. La aplicación luego abre el archivo del atacante y lo escribe (recuerde, la rutina del sistema abre un archivo existente si lo hay, y crea un nuevo archivo solo si no hay un archivo existente). El archivo del atacante puede tener diferentes permisos de acceso que el archivo temporal de la aplicación, por lo que el atacante puede leer el contenido. Alternativamente, el atacante podría tener el archivo ya abierto. El atacante podría reemplazar el archivo con un enlace fijo o simbólico a algún otro archivo (ya sea propiedad del atacante o un archivo del sistema existente). Por ejemplo, el atacante podría reemplazar el archivo con un enlace simbólico al archivo de contraseña del sistema, de modo que después del ataque, las contraseñas del sistema se hayan corrompido hasta el punto de que nadie, incluido el administrador del sistema, pueda iniciar sesión.


Compruebe si el archivo existe en el lado de la ruta del documento / catchimage:

NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; NSString *tempName = [NSString stringWithFormat:@"%@/catchimage/%@.png",stringPath,@"file name"]; NSLog(@"%@",temName); if([[NSFileManager defaultManager] fileExistsAtPath:temName]){ // ur code here } else { // ur code here** }


Si configura su sistema de archivos de manera diferente o busca una forma diferente de configurar un sistema de archivos y luego verifique si existe un archivo en la carpeta de documentos, aquí hay otro ejemplo. también mostrar la comprobación dinámica

for (int i = 0; i < numberHere; ++i){ NSFileManager* fileMgr = [NSFileManager defaultManager]; NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString* imageName = [NSString stringWithFormat:@"image-%@.png", i]; NSString* currentFile = [documentsDirectory stringByAppendingPathComponent:imageName]; BOOL fileExists = [fileMgr fileExistsAtPath:currentFile]; if (fileExists == NO){ cout << "DOESNT Exist!" << endl; } else { cout << "DOES Exist!" << endl; } }