iOS Crash之NSFileHandleOperationException

手机空间不足,会使客户端直接崩溃,触发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的有效性也要判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值