博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发 -- 为本地文件添加自定义属性的工具类
阅读量:6689 次
发布时间:2019-06-25

本文共 2843 字,大约阅读时间需要 9 分钟。

hot3.png

前言:实际开发,我们可能会有这样的需求,就是为文件添加自定义的属性,或者是可以将文件的相关信息添加进该文件的属性中,这样可以以备下次读取利用。

   那么本文就是要介绍"拓展文件属性的工具类"

 

github网址也给出了这个工具类的示例源码:

 

这个工具类的设计学习来源来自老谭博客笔记: 老谭讲解了两种方法为本地文件属性列表添加属性,其中用方法二(通过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-ExpendedAttributesTool11  */12 13 #import 
14 15 @interface ExpendFileAttributes : NSObject16 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-ExpendedAttributesTool11  */12 13 #import "ExpendFileAttributes.h"14 15 #include 
16 17 @implementation ExpendFileAttributes18 //为文件增加一个扩展属性19 + (BOOL)extendedStringValueWithPath:(NSString *)path key:(NSString *)key value:(NSString *)stringValue20 {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 *)key32 {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

打印展示结果:

转载于:https://my.oschina.net/u/2363463/blog/635805

你可能感兴趣的文章
Chrome和HTTPS:安全Web的征途
查看>>
软件专家的对话模式(第一部分)
查看>>
脚本填报表的条件查询
查看>>
从一个开发的角度看负载均衡和LVS
查看>>
Spring Boot(12)——使用MongoDB
查看>>
c++基础(上) 听课流水账
查看>>
Observable
查看>>
k8s使用deployment升级
查看>>
ionic3项目实战教程 - 第10讲 ionic3分类菜单设计(类似外卖)
查看>>
深度解析 | K8S API Server之入门须知
查看>>
LeanEngine 中使用 WebSocket
查看>>
浅入分析和Linux内核相关的文件夹/proc和/sys .
查看>>
Java 二分查找
查看>>
刚刚,阿里开源了一项重磅炸弹,终结程序员“中年危机”!
查看>>
《Spring Boot开发:从0到1》图片
查看>>
教你十分钟构建好 SpringBoot + SSM 框架
查看>>
吸烟场景运营商“烟客”获2000万元Pre-A轮融资,用于线下吸烟空间建设
查看>>
未来 Docker 的安全
查看>>
基于Android ActionBar的SearchView实时搜索结果
查看>>
spring boot +RabbitMQ +InfluxDB+Grafara监控实践
查看>>