iOS创建文件

时间:2012-01-16 13:43:58

标签: ios createfile

我正在尝试打开一个文件进行写入。该文件可能不存在。

如果文件不存在,我发现[NSFileHandle fileHandleForWritingAtPath:filePath]返回nil。 谷歌搜索后,我找到了像这样的代码片段

[[NSData data] writeToFile:filePath atomically:YES]
我猜,

确保文件存在,然后再打开它。

我的问题是:后一个代码行推荐的文件创建方式是什么?看起来很奇怪NSFileHandle没有例程来创建一个新文件(并且只能处理现有文件)。

2 个答案:

答案 0 :(得分:14)

NSFileHandle可能没有创建文件的方法,但NSFileManager有一个方法。你看过那堂课吗?

这对我来说很好,但请注意,每次都会覆盖同一个文件

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

答案 1 :(得分:0)

在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)")
    }
}