美文网首页
005 怎样用代码方式将iPhone 手机存储空间占满

005 怎样用代码方式将iPhone 手机存储空间占满

作者: UNV_iOS | 来源:发表于2019-02-15 15:09 被阅读0次

今天测试那边需要测试一种异常情况,需要让iPhone的手机存储空间占满,网上没找到好的方法,于是就自己尝试了下,遇到一些坑在这里记录一下。

把手机空间占满,第一个想到的就是使用文件复制的方法,将APP内的文件复制直到占满空间。
测试的时候,发现代码一直在复制操作,丝毫没有停下来的意思。然后再去手机系统中查看,发现了可怕的事情。如下图:


图片1

后面去stackoverflow上问了下,大概的原因是,iOS中复制文件时,并不是真的复制,而只是增加索引,导致存储空间并不能真正被占满。
原问题

接下来,就想到使用真正写入文件的方式,我使用的方式是直接将一个字符串写入到文件中,直到文件占满。

测试时,又发现,每次获取到的剩余空间也不准确,导致会一直复制。
获取剩余空间的代码如下:

/**
 *  手机剩余存储空间大小,单位为M,查询失败返回-1
 *
 *  @return 单位Mb
 */
+ (NSInteger)freeFileStorageSize
{
    NSError *error = nil;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];
    if (dictionary) {
        NSNumber *freeSizeObj = [dictionary objectForKey:NSFileSystemFreeSize];
        return [freeSizeObj unsignedLongLongValue] * 1.0 / 1024.0 / 1024.0;
    }
    UVILog(@"get phone free storage size failed, error:%@", error);
    return -1;
}

最终只能通过点击一次按钮,创建一定大小的文件的方法来曲线救国,实现将手机占满的需求。

在这个过程中,还有两个问题有没想明白:
1、在写入文件时,内存占用会快速升高,导致内存占用过高,但写入完成后会很快降下来。如正常情况下手机占用50M,但在复制时会迅速升高到900M,然后又很快降回50M。
写入的代码如下:

+ (void)writeUselessFileToPath:(NSString *)filePath content:(NSString *)content
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if(![fileManager fileExistsAtPath:filePath]) //如果不存在
    {
        [content writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];
    for (int i = 0; i < 100; i++) {
        [fileHandle seekToEndOfFile];  //将节点跳到文件的末尾
        NSData* stringData  = [content dataUsingEncoding:NSUTF8StringEncoding];
        [fileHandle writeData:stringData]; //追加写入数据
    }
    [fileHandle closeFile];
}

2、将空间占满后,打开设置,然后等一会,再打开设置,看到的剩余内存是不一样的。如占满后显示1.0G,过一会打开又显示3.0G。
使用三方的APP看剩余内存时,显示一直没变。
使用的APP是系统监控。

相关文章

网友评论

      本文标题:005 怎样用代码方式将iPhone 手机存储空间占满

      本文链接:https://www.haomeiwen.com/subject/nrapeqtx.html