iOS开发 -- 为本地文件添加自定义属性的工具类
2016-02-19 16:01
645 查看
前言:实际开发,我们可能会有这样的需求,就是为文件添加自定义的属性,或者是可以将文件的相关信息添加进该文件的属性中,这样可以以备下次读取利用。
那么本文就是要介绍"拓展文件属性的工具类"
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
// // ExpendFileAttributes.h // NSURLSession实现离线断点续传 // // Created by HEYANG on 16/2/19. // Copyright © 2016年 HEYANG. All rights reserved. // /** * ExpendFileAttributes工具类下载源码:https://github.com/HeYang123456789/NSURLSession-ExpendedAttributesTool */ #import <Foundation/Foundation.h> @interface ExpendFileAttributes : NSObject /** 为文件增加一个扩展属性,值是字符串 */ + (BOOL)extendedStringValueWithPath:(NSString *)path key:(NSString *)key value:(NSString *)value; /** 读取文件扩展属性,值是字符串 */ + (NSString *)stringValueWithPath:(NSString *)path key:(NSString *)key; @end
ExpendFileAttributes.m
// // ExpendFileAttributes.m // NSURLSession实现离线断点续传 // // Created by HEYANG on 16/2/19. // Copyright © 2016年 HEYANG. All rights reserved. // /** * ExpendFileAttributes工具类下载源码:https://github.com/HeYang123456789/NSURLSession-ExpendedAttributesTool */ #import "ExpendFileAttributes.h" #include <sys/xattr.h> @implementation ExpendFileAttributes //为文件增加一个扩展属性 + (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; } @end
打印展示结果:
![](http://images2015.cnblogs.com/blog/784420/201602/784420-20160219160008628-1112299013.png)
相关文章推荐
- iOS开发的一些奇巧淫技
- IOS 支付完成回退到指定界面
- IOS 信息提示1
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- Xcode7制作framework教程 iOS9
- IOS auto layout label自适应长度
- IOS 高级开发 KVC(一),ios开发kvc
- iOS开发单例模式 dispatch_once
- iOS block 基础性学习笔记
- 在 iOS Safari 中假装自动播放 HTML5 audio(音乐) 的正确方式
- 关于iOS蓝牙打印机
- IOS开发证书变成“此证书的签发者无效”解决方法
- iOS闭包block理解
- 【iOS】那些年,遇到的小坑
- 整理常用的iOS第三方资源
- iOS IM开发准备工作(三)乱说Socket
- IOS 证书到期后如何处理
- iOS开发之理解iOS中的MVC设计模式
- iOS持续集成jenkins+xcode+svn+七牛
- iOS语音播报文字