質問

私はそれに書き込みのためにファイルを開こうとしています。ファイルは存在しない可能性があります。

見つけた [NSFileHandle fileHandleForWritingAtPath:filePath] ファイルが存在しない場合はnilを返します。グーグルで検索して、このようなコードスニペットを見つけました

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

これは、開く前にファイルの存在を保証します。

私の質問は次のとおりです。後者のコードラインはファイル作成の方法を推奨していますか? NSFileHandleに新しいファイルを作成するルーチンがないことは奇妙に思えます(既存のファイルのみを扱うことができます)。

役に立ちましたか?

解決

NSFileHandle ファイルを作成する方法がないかもしれませんが NSFileManager 1つあります。そのクラスを見ましたか?

これは私にとって正常に機能しますが、毎回同じファイルを上書きすることに注意してください

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

他のヒント

Swift 4.xと5.0では、次のように行うことができます。

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)")
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top