Путь к файлу от NSFileHandle на iOS (Swift или Objective C)

Я получил NSFileHandle из вызова функции и хотел бы получить доступ к файлу, на который она ссылается. Как получить его?

Я знаю, что ресурс может иметь несколько путей к файлам или вообще не иметь пути к файлу (файл в памяти). Однако было бы неплохо получить что-нибудь:)

2 ответа

Ты можешь использовать F_GETPATH:

NSFileHandle* Handle = [NSFileHandle fileHandleForReadingAtPath:
                            @"/Applications/TextEdit.app/Contents/Info.plist"];
char Path[MAXPATHLEN];
if (Handle && fcntl([Handle fileDescriptor], F_GETPATH, Path) != -1)
    NSLog(@"%@", [NSString stringWithUTF8String:Path]);

Быстро:

var buffer = [CChar](repeating: 0, count: Int(MAXPATHLEN))
_  = fcntl(fileHandle.fileDescriptor, F_GETPATH, &buffer)
let fileName = String(cString: buffer)

Можно найти эту информацию, если вы действительно хотите. Вызов fstat() даст вам устройство и номер индекса файла, если он есть. Затем вы можете найти на этом устройстве файл с этим индексом. Но это будет медленно, и опять же, это может даже не существовать.

источник

Другие вопросы по тегам