Question

J'essaie d'ouvrir un fichier pour l'écrire. Le fichier peut ne pas exister.

Je l'ai trouvé [NSFileHandle fileHandleForWritingAtPath:filePath] Renvoie nil si le fichier n'existe pas. Après avoir googlé, j'ai trouvé des extraits de code comme celui-ci

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

Ce qui, je suppose, garantit l'existence des fichiers avant de l'ouvrir.

Mes questions sont les suivantes: la dernière ligne de code est-elle recommandée par la création de fichiers? Il semble étrange que NSFileHandle n'ait pas de routine pour créer un nouveau fichier (et peut traiter uniquement avec les fichiers existants).

Était-ce utile?

La solution

NSFileHandle peut ne pas avoir de méthode pour créer un fichier, mais NSFileManager en a un. Avez-vous regardé cette classe?

Cela fonctionne bien pour moi, mais notez qu'il écrasera le même fichier à chaque fois

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

Autres conseils

Dans Swift 4.x & 5.0, vous pouvez le faire comme ceci:

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)")
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top