Jim*_*vey 26
如果您希望以类似于通过NSData加载它的方式随机访问文件的内容,但实际上没有将所有内容读入内存,则可以使用内存映射.这样做意味着磁盘上的文件被视为虚拟内存的一部分,并且将像常规虚拟内存一样进行分页.
NSError * error = nil;
NSData * theData = [NSData dataWithContentsOfFile: thePath
options: NSMappedRead
error: &error];
Run Code Online (Sandbox Code Playgroud)
如果您不关心获取文件系统错误的详细信息,您可以使用:
NSData * theData = [NSData dataWithContentsOfMappedFile: thePath];
Run Code Online (Sandbox Code Playgroud)
然后你只需使用NSData的-getBytes:range:方法来提取特定的数据,只有文件的相关部分才能从永久存储中读取; 他们也有资格被分页.
Pet*_*sey 24
- [NSFileHandle readDataOfLength:].
NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:filePath];
NSData *fileData = [handle readDataOfLength:N];
[handle closeFile];
Run Code Online (Sandbox Code Playgroud)
打开文件:
NSData *fileData = [NSData dataWithContentsOfFile:fileName];
Run Code Online (Sandbox Code Playgroud)
读取你想要的字节:
int bytes[1000];
[fileData getBytes:bytes length:sizeof(int) * 1000];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9805 次 |
| 最近记录: |