獲取document路徑以及其下面的文件大小 & 清除文件,緩存


之前遇到用iexplore查看手機上app下面document下有很多文件,但是通過代碼獲取文件大小時一直出錯。

一開始使用

NSString *string = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *tempFileList = [[NSArray alloc] initWithArray:[fileManager contentsOfDirectoryAtPath:string error:nil]];
這種方法一直獲取不到。

後來修改爲以下是獲取dcoument目錄下所有文件大小。

NSDirectoryEnumerator,目錄枚舉類,一個NSDirectoryEnumerator對象列舉了一個目錄的內容,返回的所有文件在目錄中的路徑名,在該目錄中。這些路徑是相對於目錄而言的。enumeratorAtPath: 這個方法一次可以枚舉指定目錄中的每一個文件. 默認情況下,如果其中一個文件爲包含子文件,那麼也會遞歸的枚舉它的子文件. 該方法返回一個目錄的所有資源列表.


float size = 0;

    NSString *path;
    NSString *DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:DocumentsPath];
    for (NSString *fileName in enumerator) {
//        NSLog(@"文件名:%@",fileName);
        path = [DocumentsPath stringByAppendingPathComponent:fileName];
        NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
        size=size+(float)[fileAttributes fileSize];

    }

//清除dcoument下的文件:

NSString *DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:DocumentsPath];
    for (NSString *fileName in enumerator) {
        isCLearSuccess = [[NSFileManager defaultManager] removeItemAtPath:[DocumentsPath stringByAppendingPathComponent:fileName] error:nil];
    }




//獲取tmp目錄下所有文件大小:

 NSString *tmpDir = NSTemporaryDirectory();
    NSFileManager* manager = [NSFileManager defaultManager];
    if (![manager fileExistsAtPath:tmpDir]) {
        cacheSize = [NSString stringWithFormat:@"0 M"];
        [self.setTableView reloadSections:[NSIndexSet indexSetWithIndex:2] withRowAnimation:UITableViewRowAnimationNone];
        return;
    }
    NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:tmpDir] objectEnumerator];
    NSString* fileName;
    long long folderSize = 0;
    while ((fileName = [childFilesEnumerator nextObject]) != nil){
        NSString* fileAbsolutePath = [tmpDir stringByAppendingPathComponent:fileName];
        folderSize += [self fileSizeAtPath:fileAbsolutePath];
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章