Путь к файлу от 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() даст вам устройство и номер индекса файла, если он есть. Затем вы можете найти на этом устройстве файл с этим индексом. Но это будет медленно, и опять же, это может даже не существовать.