手机空间不足,会使客户端直接崩溃,触发NSFileHandleOperationException。所以在处理文件时,比如应用频繁的保存文档,缓存资料或者处理比较大的数据,需要考虑到空间的问题。
问题描述
1. 没有空间
手机没有存储空间了,或者需要写的文件太大,会触发"No space left on device"异常
2. 文件读写权限
NSString *path = NSHomeDirectory();
NSString *file = [path stringByAppendingPathComponent:@"1.text"];
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:file];
[fileHandle seekToEndOfFile];
NSString *str2 = @"Hello World";
NSData *data = [str2 dataUsingEncoding:NSUTF8StringEncoding];
[fileHandle writeData:data];
[fileHandle closeFile];
运行出现下面的错误
明明是要写文件,可只给了读的权限,所以触发了"Bad file descriptor"异常
3. 读文件失败
- readDataOfLength:
4. 获取文件数据失败
availableData Property
解决办法
在处理文件I/O操作时,需要考虑到存储空间的有限性,对大小参数进行有效性校验;另外对NSFileHandle的有效性也要判断