[英]How to get FILE * from NSFileHandle *?
旧的解析器依靠FILE *
来工作。 但是,适用于iOS的Dropbox Sync API返回NSFileHandle *
而不是FILE *
作为文件句柄。
所以我尝试使用NSFileHandle
fileDescriptor
:
-(NSFileHandle )readHandle:(DBError * )错误
返回文件的只读文件句柄。 如果未缓存文件,则该方法将阻塞,直到下载文件为止。 退货
如果可以读取文件,则为文件句柄;如果发生错误,则为nil。
并作为FILE *
传递:
- (void)loadDBFile:(DBFile *)dbFile
{
DBError *dbError;
NSFileHandle *fileHandle = [dbFile readHandle:&dbError];
if (fileHandle) {
FILE *file = fileHandle.fileDescriptor;
fseek(file, 0, SEEK_END); // EXE_BAD_ACCESS here!
// ...
}
}
但是,在fseek
行上有一个EXE_BAD_ACCESS
。
fileDescriptor
返回基础文件描述符,一个简单的整数,而不是FILE
对象(它包装了文件描述符,但不是同一对象)。 使用fdopen()
从文件描述符获取FILE
对象:
FILE *file = fdopen([filehandle fileDescriptor], "r"); // Create a read-only FILE object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.