iOS создать файл - PullRequest
       5

iOS создать файл

6 голосов
/ 16 января 2012

Я пытаюсь открыть файл для записи в него.Файл может не существовать.

Я обнаружил, что [NSFileHandle fileHandleForWritingAtPath:filePath] возвращает ноль, если файл не существует.Погуглив, я нашел такие фрагменты кода, как этот

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

, который, я думаю, обеспечивает существование файла перед его открытием.

Мои вопросы: является ли последняя строка кода рекомендуемым способом создания файла?Кажется странным, что NSFileHandle не имеет процедуры для создания нового файла (и может работать только с существующими файлами).

Ответы [ 2 ]

14 голосов
/ 16 января 2012

NSFileHandle может не иметь метода для создания файла, но NSFileManager имеет его. Вы смотрели на этот класс?

Для меня это нормально, но учтите, что каждый раз будет перезаписывать один и тот же файл

NSString *cachesFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *file = [cachesFolder stringByAppendingPathComponent:@"testfile"];    
[[NSData data] writeToFile:file options:NSDataWritingAtomic error:nil];
0 голосов
/ 30 апреля 2019

В 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)")
    }
}
...