OC循环渐进:文件管理--计算文件大小的五种方式

在文件管理中,计算文件的大小是要经常用到的操作!其核心就是利用NSData中的length方法来计算字节长度。


以下介绍文件中计算大小的五种常见方式:
创建文件的代码如下:

    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

    NSLog(@"documentPath = %@",documentPath);

    NSString *path = [documentPath stringByAppendingPathComponent:@"myfile"];

    NSFileManager *fm = [NSFileManager defaultManager];

    if (![fm fileExistsAtPath:path]) {
        if ([fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil]) {
            NSString *fileName = [path lastPathComponent];
            NSLog(@"文件夹%@创建成功!",fileName);
        }
    }else {
        NSLog(@"文件已经存在!");
    }

    NSString *textPath = [path stringByAppendingPathComponent:@"content.txt"];
    NSString *content = @"this is my content22222222!";
    char *string = (char *)[content UTF8String];
    NSData *data = [NSData dataWithBytes:string length:strlen(string)];
    if (![fm fileExistsAtPath:textPath]) {
        if ([fm createFileAtPath:textPath contents:data attributes:nil]) {
            NSString *fileName = [textPath lastPathComponent];
            NSLog(@"文件%@创建成功!,文件类型为:%@",fileName,[fileName pathExtension]);
        }

    }else {
        NSLog(@"文件已经存在!");
    }

第一种计算文件大小的代码如下:

    NSArray *array = [fm subpathsAtPath:path];

    NSData *data1 = [NSData dataWithContentsOfFile:[path stringByAppendingPathComponent:array[0]]];

    NSLog(@"文件大小为:%ld",data1.length);

第二种计算文件大小的代码如下:

    NSData *data2 = [fm contentsAtPath:textPath];
    NSLog(@"文件大小为:%ld",data2.length);

第三种计算文件大小的代码如下:

 NSDictionary *dict = [fm attributesOfItemAtPath:textPath error:nil];
    NSInteger size = [dict[NSFileSize] integerValue];
    NSLog(@"文件大小为:%ld",size);

第四种计算文件大小的代码如下:

    NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:textPath]; //NSFileHandle
    NSData *data4 = [fileHandle readDataToEndOfFile];
    NSLog(@"文件大小为:%ld",data4.length);

第五种计算文件大小的代码如下:

    [fileHandle seekToFileOffset:0];
    NSData *data5 = [fileHandle availableData];
    NSLog(@"文件大小为:%ld",data5.length);
    [fileHandle closeFile]; //关闭NSFileHandle

测试结果如下:

2015-08-12 15:27:54.805 文件管理练习[11888:757524] documentPath = /Users/3017/Library/Developer/CoreSimulator/Devices/6B694589-D6CC-4EEC-B953-E4A519E801FC/data/Containers/Data/Application/D85F999C-AE67-4E66-B3D3-1B6FF5362667/Documents
2015-08-12 15:27:54.806 文件管理练习[11888:757524] 文件已经存在!
2015-08-12 15:27:54.846 文件管理练习[11888:757524] 文件已经存在!
2015-08-12 15:27:54.932 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.932 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.933 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.933 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.933 文件管理练习[11888:757524] 文件大小为:27

好了,文件管理中计算文件的大小就到时为止了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值