iOS开发 -- 为本地文件添加自定义属性的工具类
2016-03-11 00:00
549 查看
前言:实际开发,我们可能会有这样的需求,就是为文件添加自定义的属性,或者是可以将文件的相关信息添加进该文件的属性中,这样可以以备下次读取利用。
那么本文就是要介绍"拓展文件属性的工具类"
github网址也给出了这个工具类的示例源码:https://github.com/HeYang123456789/NSURLSession-ExpendedAttributesTool
这个工具类的设计学习来源来自老谭博客笔记:http://www.tanhao.me/pieces/1102.html/ 老谭讲解了两种方法为本地文件属性列表添加属性,其中用方法二(通过NSFileManager一个特殊的AttributeName)我发现好像无效了,暂时不明原因,待以后再探究和解决。但是方法一是有效的,代码就无比鸡贼的拷贝展示如下喽:
ExpendFileAttributes.h
ExpendFileAttributes.m
打印展示结果:
那么本文就是要介绍"拓展文件属性的工具类"
github网址也给出了这个工具类的示例源码:https://github.com/HeYang123456789/NSURLSession-ExpendedAttributesTool
这个工具类的设计学习来源来自老谭博客笔记:http://www.tanhao.me/pieces/1102.html/ 老谭讲解了两种方法为本地文件属性列表添加属性,其中用方法二(通过NSFileManager一个特殊的AttributeName)我发现好像无效了,暂时不明原因,待以后再探究和解决。但是方法一是有效的,代码就无比鸡贼的拷贝展示如下喽:
ExpendFileAttributes.h
1 // 2 // ExpendFileAttributes.h 3 // NSURLSession实现离线断点续传 4 // 5 // Created by HEYANG on 16/2/19. 6 // Copyright © 2016年 HEYANG. All rights reserved. 7 // 8 9 /** 10 * ExpendFileAttributes工具类下载源码:https://github.com/HeYang123456789/NSURLSession-ExpendedAttributesTool 11 */ 12 13 #import <Foundation/Foundation.h> 14 15 @interface ExpendFileAttributes : NSObject 16 17 /** 为文件增加一个扩展属性,值是字符串 */ 18 + (BOOL)extendedStringValueWithPath:(NSString *)path key:(NSString *)key value:(NSString *)value; 19 20 /** 读取文件扩展属性,值是字符串 */ 21 + (NSString *)stringValueWithPath:(NSString *)path key:(NSString *)key; 22 23 24 @end
ExpendFileAttributes.m
1 // 2 // ExpendFileAttributes.m 3 // NSURLSession实现离线断点续传 4 // 5 // Created by HEYANG on 16/2/19. 6 // Copyright © 2016年 HEYANG. All rights reserved. 7 // 8 9 /** 10 * ExpendFileAttributes工具类下载源码:https://github.com/HeYang123456789/NSURLSession-ExpendedAttributesTool 11 */ 12 13 #import "ExpendFileAttributes.h" 14 15 #include <sys/xattr.h> 16 17 @implementation ExpendFileAttributes 18 //为文件增加一个扩展属性 19 + (BOOL)extendedStringValueWithPath:(NSString *)path key:(NSString *)key value:(NSString *)stringValue 20 { 21 NSData* value = [stringValue dataUsingEncoding:NSUTF8StringEncoding]; 22 ssize_t writelen = setxattr([path fileSystemRepresentation], 23 [key UTF8String], 24 [value bytes], 25 [value length], 26 0, 27 0); 28 return writelen==0?YES:NO; 29 } 30 //读取文件扩展属性 31 + (NSString *)stringValueWithPath:(NSString *)path key:(NSString *)key 32 { 33 ssize_t readlen = 1024; 34 do { 35 char buffer[readlen]; 36 bzero(buffer, sizeof(buffer)); 37 size_t leng = sizeof(buffer); 38 readlen = getxattr([path fileSystemRepresentation], 39 [key UTF8String], 40 buffer, 41 leng, 42 0, 43 0); 44 if (readlen < 0){ 45 return nil; 46 } 47 else if (readlen > sizeof(buffer)) { 48 continue; 49 }else{ 50 NSData *data = [NSData dataWithBytes:buffer length:readlen]; 51 NSString* result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 52 NSLog(@"result---%@",result); 53 return result; 54 } 55 } while (YES); 56 return nil; 57 } 58 @end
打印展示结果:
相关文章推荐
- IOS之Foundation--plist简说
- 如何创建可扩展表视图中的iOS 学习和拓展优化(有待更新)
- IOS开发之待探究随录
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <一>
- iOS设计模式 - 单例
- 关于第三方IOS的checkBox框架的使用
- iOS之github第三方框架(持续更新)
- 网易新闻iOS版使用的18个开源组件
- IOS学习资源收集--关于动画的代码学习资源总汇(很棒的动画效果哦)
- IOS设计模式-观察者模式
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <二> NSMutableString
- IOS设计模式-组合设计模式
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <四> NSMutableArray
- IOS开发之支付功能概述
- IOS应用沙盒文件操作
- 1、IOS开发--iPad之仿制QQ空间(登录界面搭建+登录逻辑实现)
- 关于IOS应用程序视图
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <五> NSDicionary + NSMutableDictionary
- iOS设计模式 - 单例模式
- <极客学院>视频教程学习笔记-iOS中CALayer的使用