如何删除文件大小小于特定大小的文件夹内的所有文件(字节)

时间:2014-11-22 18:15:33

标签: ios objective-c nsurl nsfilemanager

我有一个文件夹调用“Recorded”。在里面说,现在有10个音频文件(.m4a)。这些文件(字节)的大小可以不同或相同。现在我想删除那个文件夹内的文件,这些文件的大小小于542 Bytes

我可以从该文件夹中删除发送“fileName”

的文件
- (void)removeAudioFile:(NSString *) fileName
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString *folder = [documentsPath stringByAppendingPathComponent:@"/Recorded"];
    NSString *filePath = [folder stringByAppendingPathComponent:fileName];
    NSError *error;
    BOOL success = [fileManager removeItemAtPath:filePath error:&error];
    if (success)
    {

    }
    else
    {
        NSLog(@"Could not delete file -:%@ ",[error localizedDescription]);
    }
}

我可以测量该文件夹中的特定文件大小:

-(void) FileSize:(NSString *) urlPath
{
    NSError *attributesError;
    NSString *path = [urlPath stringByAppendingString:@"/22Nov2014_02.19.50AM.m4a"];

    unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:path error:&attributesError] fileSize];

    NSLog(@"file size %lld", fileSize);
}

我可以删除该文件夹中的所有文件:

-(void) deleteAllFiles:(NSString *) urlPath
{
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:urlPath error:nil];
    for (NSString *filename in fileArray)
    {
        [fileMgr removeItemAtPath:[urlPath stringByAppendingPathComponent:filename] error:NULL];
    }
}

但我想删除文件大小小于542 Bytes的“Recorded”中的那些文件。 如果您理解我的问题,请回复我。 非常感谢先进。

1 个答案:

答案 0 :(得分:1)

只需检查文件大小是否低于542字节,如果是,请将其删除:

-(void) deleteAllFiles:(NSString *) urlPath
{
    NSFileManager *fileMgr = [NSFileManager defaultManager];
    NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:urlPath error:nil];
    for (NSString *filename in fileArray)
    {
        NSString *filePath = [path stringByAppendingPathComponent:filename];
        unsigned long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil] fileSize];
        if (fileSize < 542) [fileMgr removeItemAtPath:filePath error:NULL];
    }
}