您的位置:首页 > 其它

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

2015-08-12 18:50 711 查看
在文件管理中,计算文件的大小是要经常用到的操作!其核心就是利用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


好了,文件管理中计算文件的大小就到时为止了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息