iOS 给文件添加属性

/ 0评 / 0

iOS中读取文件的时候能够读到很多属性,比如下面的方法读取文件属性

NSString *path = @"...";
//通过NSFileManager获取文件的属性
NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:NULL];
NSLog(@"%@",attributes);

//通过NSURL获取文件属性
NSURL *fileUrl = [NSURL fileURLWithPath:path];
attributes = [fileUrl resourceValuesForKeys:[NSArray arrayWithObject:NSURLFileSizeKey] error:NULL];
NSLog(@"%@",attributes);

如果想给文件添加自定义的属性咋办嘞?比如项目中下载文件之后给文件添加自定的属性,下面来看看我用的方法

#include 

//为文件增加一个扩展属性
+ (BOOL)extendedStringValueWithPath:(NSString *)path key:(NSString *)key value:(NSString *)stringValue{
    NSData* value = [stringValue dataUsingEncoding:NSUTF8StringEncoding];
    ssize_t writelen = setxattr([path fileSystemRepresentation],
                                [key UTF8String],
                                [value bytes],
                                [value length],
                                0,
                                0);
    return writelen==0?YES:NO;
}

//读取文件扩展属性
+ (NSString *)stringValueWithPath:(NSString *)path key:(NSString *)key{
    ssize_t readlen = 1024;
    do {
        char buffer[readlen];
        bzero(buffer, sizeof(buffer));
        size_t leng = sizeof(buffer);
        readlen = getxattr([path fileSystemRepresentation],
                           [key UTF8String],
                           buffer,
                           leng,
                           0,
                           0);
        if (readlen < 0){
            return nil;
        }
        else if (readlen > sizeof(buffer)) {
            continue;
        }else{
            NSData *data = [NSData dataWithBytes:buffer length:readlen];
            NSString* result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"result---%@",result);
            return result;
        }
    } while (YES);
    return nil;
}

评论已关闭。