Domanda

Sto cercando di aprire un file per scriverlo. Il file potrebbe non esistere.

l'ho trovato [NSFileHandle fileHandleForWritingAtPath:filePath] Restituisce zero se il file non esiste. Avendo cercato su Google, ho trovato frammenti di codice come questo

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

Il che, immagino, garantisce l'esistenza di file prima di aprirlo.

Le mie domande sono: quest'ultima riga di codice è consigliata la creazione di file? Sembra strano che NSFileHandle non abbia una routine per creare un nuovo file (e solo può gestire i file esistenti).

È stato utile?

Soluzione

NSFileHandle potrebbe non avere un metodo per creare un file, ma NSFileManager Ha uno. Hai guardato quella classe?

Questo funziona bene per me, tuttavia si noti che ogni volta sovrascriverà lo stesso file

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

Altri suggerimenti

In Swift 4.x e 5.0, puoi farlo in questo modo:

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)")
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top