如何从iPhone文件夹获取文件的文件大小

我有我保存在文件文件夹中的video文件它工作正常,但我想获得保存文件的文件大小,我已经search,但没有得到使用NSfileManager的结果,这里是我用来保存video的代码。我想获取文件大小并在UILabel上显示。

谢谢

NSURL*videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; NSLog(@"found a video"); videoData = [[NSData dataWithContentsOfURL:videoURL] retain]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease]; [dateFormat setDateFormat:@"dd-MM-yyyy_HH:mm:SS"]; NSDate *now = [[[NSDate alloc] init] autorelease]; NSDate* theDate = [dateFormat stringFromDate:now]; NSString*myDate=[dateFormat stringFromDate:theDate]; NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Default Album"]; if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil]; NSString*test=@"test"; NSString*testUser=[test stringByReplacingOccurrencesOfString:@" " withString:@""]; videopath= [[[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/%@.mp4",documentsDirectory,testUser]] autorelease]; BOOL success = [videoData writeToFile:videopath atomically:NO]; NSLog(@"Successs:::: %@", success ? @"YES" : @"NO"); NSLog(@"video path --> %@",videopath); NSURL *movieURL = [NSURL fileURLWithPath:videopath]; AVURLAsset *avUrl = [AVURLAsset assetWithURL:movieURL]; CMTime time1 = [avUrl duration]; int seconds = ceil(time1.value/time1.timescale); // durationTime=[NSString stringWithFormat:@"%d",seconds]; // insertTime=[NSString stringWithFormat:@"%d",seconds]; NSString*messageA=[NSString stringWithFormat:@"You have recorded video of duration of %d seconds ",seconds]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:messageA delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; AVAsset *asset = [AVAsset assetWithURL:movieURL];// url= give your url video here AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset]; CMTime time = CMTimeMake(1, 5);//it will create the thumbnail after the 5 sec of video CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:NULL]; UIImage *thumbnail = [UIImage imageWithCGImage:imageRef]; thumbnailImageView.image=thumbnail; 

尝试这个帮助你

  NSDictionary *fileDictionary = [[NSFileManager defaultManager] fileAttributesAtPath:videopath traverseLink:YES]; fileSize = [fileDictionary fileSize]; 

注意:以上方法是被删除的,使用下面的方法

Objective-C的:

  NSError* error; NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:mediaURL error: &error]; NSNumber *size = [fileDictionary objectForKey:NSFileSize]; 

迅速:

 do { let fileDictionary = try FileManager.default.attributesOfItem(atPath: urlString) let fileSize = fileDictionary[FileAttributeKey.size] print ("\(fileSize)") } catch{} 

** 这个文件大小以字节为单位

使用NSFileManager attributesOfItemAtPath:error

https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSFileManager/attributesOfItemAtPath:error

它返回一个文件属性的NSDictionary,它包含的一个键是NSFileSize,即文件的大小。

试试这个方法。

  // Get file size NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *filePath = [documentsDirectory stringByAppendingString:[directoryContent objectAtIndex:indexPath.row]]; NSDictionary *fileAttributes = [fileManager fileAttributesAtPath:filePath traverseLink:YES]; if(fileAttributes != nil) { NSString *fileSize = [fileAttributes objectForKey:NSFileSize]; [[cell detailTextLabel] setText:[NSString stringWithFormat:@"%@ kb", fileSize]]; NSLog(@"File size: %@ kb", fileSize); } 

在几天之前,我也在寻找一些非常相似的东西。 我需要上传本地文件到保pipe箱,这里是我的工作:检查下面的链接:

https://stackoverflow.com/a/1694928/2098401