Pregunta

Estoy tratando de abrir un archivo para escribirlo. El archivo puede no existir.

encontre eso [NSFileHandle fileHandleForWritingAtPath:filePath] Devuelve nil si el archivo no existe. Habiendo buscado en Google, encontré fragmentos de código como este

[[NSData data] writeToFile:filePath atomically:YES]

Lo que, supongo, asegura la existencia del archivo antes de abrirlo.

Mis preguntas son: ¿Se recomienda la forma de creación de archivos recomendada por la línea de código? Parece extraño que NSFileHandle no tenga una rutina para crear un nuevo archivo (y solo puede tratar con los archivos existentes).

¿Fue útil?

Solución

NSFileHandle Es posible que no tenga un método para crear un archivo, pero NSFileManager Tiene uno. ¿Has mirado esa clase?

Esto funciona bien para mí, sin embargo, tenga en cuenta que sobrescribirá el mismo archivo cada vez

NSString *cachesFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *file = [cachesFolder stringByAppendingPathComponent:@"testfile"];    
[[NSData data] writeToFile:file options:NSDataWritingAtomic error:nil];

Otros consejos

En Swift 4.x y 5.0, puedes hacerlo así:

let yourData = Data() // the data to write

let cachesFolderPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first

if let path = cachesFolderPath {
    let url = URL(fileURLWithPath: path).appendingPathComponent("xxx-cache")
    do {
        try yourData.write(to: url)
    } catch {
        print("writing failed: \(error.localizedDescription)")
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top