在文件管理中,计算文件的大小是要经常用到的操作!其核心就是利用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
好了,文件管理中计算文件的大小就到时为止了!