2012-02-16 26 views
6

Tôi có đoạn code sau đây tôi sử dụng để hình ảnh bộ nhớ cache Tôi tải tắt Flickr trong bộ nhớ của thiết bị:iOS - Nhận tổng filesize trong thư mục

NSURL *urlForPhoto = [FlickrFetcher urlForPhoto:self.photo format:FlickrPhotoFormatLarge]; 
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *imagePath = [rootPath stringByAppendingString:[self.photo objectForKey:FLICKR_PHOTO_ID]]; 
NSData *dataForPhoto; 
NSError *error = nil; 
if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) { 
    dataForPhoto = [NSData dataWithContentsOfFile:imagePath]; 
} else { 
    dataForPhoto = [NSData dataWithContentsOfURL:urlForPhoto]; 
    [dataForPhoto writeToFile:imagePath atomically:YES]; 
} 

Tôi muốn giới hạn này đến 10MB và sau đó nếu giới hạn là đạt được để xóa ảnh cũ nhất trong bộ nhớ cache, làm cách nào tôi có thể nhận được tổng kích thước của tất cả các tệp tôi đã lưu và kiểm tra xem tệp nào là tệp cũ nhất?

+0

khóa học iOS stanford? – Uko

+0

Đúng, tôi phải đưa ra nhận xét lâu hơn để tôi có thể trả lời. – 8vius

+0

Tính kích thước mà thư mục chiếm trên đĩa thực sự có liên quan nhiều hơn một chút. Tìm hiểu cách trả lời [câu trả lời này] (http://stackoverflow.com/a/28660040/104790) cho một câu hỏi tương tự. –

Trả lời

9

Bạn có thể lấy kích thước của một tập tin như vậy

NSError *attributesError = nil; 

    NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:URL error:&attributesError]; 

    int fileSize = [fileAttributes fileSize]; 

Vì vậy, bạn có thể có thể lặp qua tất cả các file trong thư mục và gắn lên các kích thước file ... không chắc chắn nếu theres một cách trực tiếp để có được kích thước thư mục, cũng theres này SO gửi nói về là tốt này, bạn có thể tìm một giải pháp here

Để tìm ngày tạo tập tin bạn có thể làm

NSString *path = @""; 
    NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil]; 
    NSDate *result = [fileAttribs valueForKey:NSFileCreationDate]; //or NSFileModificationDate 

Hy vọng nó sẽ giúp

+0

Tuyệt vời Daniel, một điều nữa, làm thế nào sẽ là một cách chắc chắn kiểm tra nếu một thư mục tồn tại? Bởi vì tôi sẽ tạo một thư mục con trong thư mục tài liệu nếu nó không tồn tại – 8vius

+0

[NSFileManager defaultManager] itemExistsAtPath nên làm thủ thuật – Daniel

+3

Nó thực sự là fileExistsAtPath, Daniel. Bây giờ, bạn có thể trả lời một điều nữa không? Nếu tôi nhận được các thuộc tính và nhận được đối tượng NSFileSize trên nó, tôi nhận được một số nhỏ, nếu tôi gọi nó trên một tập tin tôi nhận được một số lượng lớn (cả hai byte tôi giả định), không nhận được kích thước tập tin cho thư mục cho tôi tổng số của tất cả các tập tin bên trong nó? – 8vius

Các vấn đề liên quan