iOS 自定义读写文件
LSCacheFile.h
//
// LSCacheFile.h
// iPhone
//
// Created by xujinzhong on 14-6-5.
// Copyright (c) 2014年 xujinzhong. All rights reserved.
// #import <Foundation/Foundation.h>
#import "LSCommonMacro.h"
@interface LSCacheFile : NSObject //写入文件
+ (BOOL)writeFileName:(NSString *)fileName data:(id)result;
//读出文件
+ (id)readFileName:(NSString *)fileName;
//计算文件大小
+ (NSString *)folderSizeStringAtPath:(NSString *)folderPath;
//格式化size为M,K模式
+(NSString*)sizeStringFromSizeLong:(long long) folderSize;
//以B方式获取目录下的文件大小
+ (long long)folderSizeAtPath:(NSString*)folderPath;
//判断文件是否存在
+ (BOOL)isExistsFile:(NSString *)filepath;
//删除缓存文件
+ (void)deleteCacheFile:(NSString *)filepath; @end
LSCacheFile.m
//
// LSCacheFile.m
// iPhone
//
// Created by xujinzhong on 14-6-5.
// Copyright (c) 2014年 xujinzhong. All rights reserved.
// #import "LSCacheFile.h"
#include "sys/stat.h" #define PATH_AT_LIBDIR(name) [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:name] @implementation LSCacheFile + (NSString *)filePath:(NSString *)fileName{
NSString *floderPath = PATH_AT_LIBDIR(@"Caches/LSCacheFinder");
if(![[NSFileManager defaultManager] fileExistsAtPath:floderPath isDirectory:nil]){
[[NSFileManager defaultManager] createDirectoryAtPath:floderPath withIntermediateDirectories:NO attributes:nil error:nil];
}
return [floderPath stringByAppendingPathComponent:fileName];
} + (BOOL)writeFile:(NSString *)fileName object:(id)object{
if(fileName == nil){ return NO;
}
if(![NSKeyedArchiver archiveRootObject:object toFile:fileName]){ return NO;
}
return YES;
} + (id)readFile:(NSString *)fileName{
if(fileName == nil){
return nil;
}
return [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];
} + (BOOL)writeFileName:(NSString *)fileName data:(id)result{
NSString *pathName = [LSCacheFile filePath:fileName];
if ([LSCacheFile isExistsFile:pathName]) {
[[NSFileManager defaultManager] removeItemAtPath:pathName error:nil];
}
return [LSCacheFile writeFile:pathName object:result];
} + (id)readFileName:(NSString *)fileName{
if (!fileName) {
return nil;
}
if(![LSCacheFile isExistsFile:fileName]){
return nil;
} id object = [LSCacheFile readFile:[LSCacheFile filePath:fileName]];
if (!object) {
return nil;
}
return object;
} + (BOOL)isExistsFile:(NSString *)filepath{
NSFileManager *filemanage = [NSFileManager defaultManager];
return [filemanage fileExistsAtPath:[LSCacheFile filePath:filepath]];
} +(void)deleteCacheFile:(NSString *)filepath
{
BOOL flag = NO;
if([[NSFileManager defaultManager] fileExistsAtPath:filepath isDirectory:&flag])
{
[[NSFileManager defaultManager] removeItemAtPath:filepath error:nil];
}
} //计算文件夹下文件的总大小
+ (NSString *)folderSizeStringAtPath:(NSString *)folderPath
{
long long folderSize = [LSCacheFile folderSizeAtPath:folderPath];
return [self sizeStringFromSizeLong:folderSize];
} +(NSString*)sizeStringFromSizeLong:(long long) folderSize
{
if (folderSize < ) {
return @"0K";
}else if(folderSize/1024.0 < ){
return [NSString stringWithFormat:@"%.2fK",folderSize/1024.0];
}else if(folderSize/1024.0/1024.0 < ){
return [NSString stringWithFormat:@"%.2fM",folderSize/1024.0/1024.0];
}else if(folderSize/1024.0/1024.0/1024.0 < ){
return [NSString stringWithFormat:@"%.2fG",folderSize/1024.0/1024.0/1024.0];
}
return @"";
} + (long long)folderSizeAtPath:(NSString*)folderPath{
NSFileManager* manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:folderPath]) return ;
NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
NSString* fileName;
long long folderSize = ;
while ((fileName = [childFilesEnumerator nextObject]) != nil){
NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
folderSize += [LSCacheFile fileSizeAtPath:fileAbsolutePath];
}
return folderSize;
} + (long long)fileSizeAtPath:(NSString*)filePath{
struct stat st;
if(lstat([filePath cStringUsingEncoding:NSUTF8StringEncoding], &st) == ){
return st.st_size;
}
return ;
} @end
iOS 自定义读写文件的更多相关文章
- C++读写文件ofstream,ifstream,fstream)[转]
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容:[ ...
- Inno Setup 如何读写文件
软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...
- iOS的常见文件及程序的启动原理
一. iOS中常见文件 (一). Xcode6之前 创建项目,默认可以看见一个存放框架的文件夹 info文件以工程文件名开头,如:第一个项目-Info.plist 项目中默认有一个PCH文件 (二). ...
- 你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?
2.2 基本输入/输出流 听过HelloWorld.exe的自我介绍之后,大家已经知道了一个C++程序的任务就是描述数据和处理数据.这两大任务的对象都是数据,可现在的问题是,数据不可能无中生有地产生 ...
- iOS自定义的UISwitch按钮
UISwitch开关控件 开关代替了点选框.开关是到目前为止用起来最简单的控件,不过仍然可以作一定程度的定制化. 一.创建 UISwitch* mySwitch = [[ UISwitchalloc] ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- C++读写文件流的相关介绍
掌握文本文件读写的方法了解二进制文件的读写方法 C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流 //创建一个文本文件并写入信息//同 ...
- IOS上传文件开发
IOS上传文件开发 在移动应用开发 文件形式上传是不可缺少的,近期把IOS这块文件上传文件代码简单的整理一下.假设大家有须要安卓这边的代码,本人也能够分享给大家! QQ群:74432915 ...
- .NET MVC4 实训记录之五(访问自定义资源文件)
.Net平台下工作好几年了,资源文件么,大多数使用的是.resx文件.它是个好东西,很容易上手,工作效率高,性能稳定.使用.resx文件,会在编译期动态生成已文件名命名的静态类,因此它的访问速度当然是 ...
随机推荐
- kitti 数据集解析
1.KITTI数据集采集平台: KITTI数据采集平台包括2个灰度摄像机,2个彩色摄像机,一个Velodyne 3D激光雷达,4个光学镜头,以及1个GPS导航系统.坐标系转换原理参见click.KIT ...
- 1.oracle中decode的一些巧妙用法
1.符号函数sign在decode中的用法--比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值sign()函数根据某个值是0 ...
- CS231n 2016 通关 第三章-SVM 作业分析
作业内容,完成作业便可熟悉如下内容: cell 1 设置绘图默认参数 # Run some setup code for this notebook. import random import nu ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bireportSqlSessionFactory' defined in URL
报错如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birepo ...
- 【Linux学习】Linux文件系统3—文件操作命令
Linux文件系统3-文件操作命令 Linux文件操作命令主要有: cd: 改变目录位置 pwd: 显示当前目录的绝对路径 ls: 显示文件名称.属性等 -a 列出全部文件 -l 列出 ...
- qq开放平台可以应用到网页游戏的api整理
创建角色界面api整理 一.需求描述 1. 创建角色名称可以用qq空间昵称代替 2. 如果玩家是在新区玩的话,赠送老玩家支持礼包 3. 可以看到,好友xxx也在玩,而且到了多少等级,如果加为好友 ...
- 让webStorm支持自动监听编译scss文件
前提概要 今日,重装了两波系统,,,之前安装的各种环境都忘光了,重新又踩一次坑的感觉很不舒服,所以记录一下配置自动编译scss一路遇到的坑 一.webstrom run的时候控制台输出的错误中文提示乱 ...
- HDU1059 【DP·二进制数优化】
题意: 有6种不同价值的物品,然后问你能不能分成两半使得两堆价值相等: 思路: 一共有20000*6=120000 多的价值, 总共背包有20000个,价值最大是120000,看看能不能DP到valu ...
- HDU1598【最小生成树拓展】
参考自 http://www.cnblogs.com/nanke/archive/2012/02/13/2350008.html PS: 没想到最小生成树的kruskal算法从小到大枚举边,然后MAX ...
- GraphicsLab Project之再谈Shadow Map
作者:i_dovelemon 日期:2019-06-07 主题:Shadow Map(SM), Percentage Closer Filtering(PCF), Variance Shadow Ma ...