繁体   English   中英

如何从NSFileHandle *获取FILE *?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM