当前位置: 首页 > news >正文

IOS文件操作

Objective-C文件和目录操作,IOS文件操作,NSFileManager使用文件操作:

 

objective-c通过使用NSFileManager类来管理和操作文件、目录,NSFileManager,文件或目录是使用文件的路径名的唯一标示。每个路径名都是一个NSString对象。

NSFileManager对象通过defaultManager方法来创建实例
列如:

NSFileManager *fm = [NSFileManager defaultManager];

 

删除某个文件
[fm removeItemAtPath:@"filename" error:NULL];

error:参数是一个指向NSError对象的指针,能够提供错误的信息。如果指定为NULL的话就会使用默认的行为,返回值是BOOL类型的方法,操作成功返回YES反之返回NO

 

判断文件是否被删除
if([fm removeItemAtPath:@"filename" error:NULL]==NO){
NSLog(@"文件删除失败");
return 1;
}

 

NSFileManager常用的文件方法:

-(NSData*)contentsAtPath:path 从一个文件中读取数据

-(BOLL)createFileAtPath:path contents:(NSData*)data attributes: attr 向一个文件写入数据

-(BOOL)removeItemAtPath:path error:err 删除一个文件

-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移动一个文件(to 不能是已存在的)

-(BOOL)copyItemAtPath:from toPath:to error:err 复制文件(to 不能是已存在的)

-(BOOL)contentsEqualAtPath:path1 andPath:path2 比较这两个文件的内容

-(BOOL)fileExistsAtPath:path 测试文件是否存在

-(BOOL)isReadableFileAtPath:path 测试文件是否存在,并且是否能执行读操作

-(BOOL)isWritableFileAtPath:path 测试文件是否存在,并且是否能执行写操作

-(NSDictionary*)attributesOfItemAtPath:path error:err 获取文件的属性

属性字典允许你指定要创建的文件的权限,如果将该参数指定为nil,该文件会被设置为默认权限。

 

1、通过一段程序来对文件进行操作:

 

[cpp]  view plain copy print ?
 
  1. //  
  2. //  main.m  
  3. //  NSFileManager_01  
  4. //  
  5. //  Created by swinglife on 13-11-10.  
  6. //  Copyright (c) 2013年 swinglife. All rights reserved.  
  7. //  
  8.   
  9. #import <Foundation/Foundation.h>  
  10.   
  11. int main(int argc, const char * argv[])  
  12. {  
  13.       
  14.     @autoreleasepool {  
  15.         //文件名  
  16.         NSString *fileName = @"testFile";  
  17.         NSString *fileContent = @"这是文件内容!!!!";  
  18.         NSData *fileData = [fileContent dataUsingEncoding:NSUTF8StringEncoding];  
  19.           
  20.         //创建NSFileManager实例  
  21.         NSFileManager *fm = [NSFileManager defaultManager];  
  22.           
  23.         //创建文件  
  24.         [fm createFileAtPath:fileName contents:fileData attributes:nil];  
  25.           
  26.         //判断文件是否存在 不存在就结束程序  
  27.         if([fm fileExistsAtPath:fileName]==NO){  
  28.             NSLog(@"文件不存在");  
  29.             return 1;  
  30.         }  
  31.           
  32.         //拷贝文件  
  33.         if([fm copyItemAtPath:fileName toPath:@"newFile" error:NULL]==NO){  
  34.             NSLog(@"复制失败");  
  35.             return 2;  
  36.         }  
  37.           
  38.         //测试两个文件是否相同  
  39.         if([fm contentsEqualAtPath:fileName andPath:@"newFile"]==NO){  
  40.             NSLog(@"文件不相同");  
  41.             return 3;  
  42.         }  
  43.           
  44.         //重命名newFile  
  45.         [fm moveItemAtPath:@"newFile" toPath:@"newFile2" error:NULL];  
  46.           
  47.         //获取newFile2的大小  
  48.         NSDictionary *fileAttr = [fm attributesOfItemAtPath:@"newFile2" error:NULL];  
  49.         if(fileAttr!=nil){  
  50.             NSLog(@"文件大小:%llu bytes",[[fileAttr objectForKey:NSFileSize] unsignedLongLongValue]);  
  51.         }  
  52.           
  53.         //删除文件  
  54.         [fm removeItemAtPath:fileName error:NULL];  
  55.           
  56.         //显示newFile2的内容  
  57.         NSString *data = [NSString stringWithContentsOfFile:@"newFile2" encoding:NSUTF8StringEncoding error:NULL];  
  58.         NSLog(@"%@",data);  
  59.           
  60.           
  61.     }  
  62.     return 0;  
  63. }  

 

 

NSFileManager常用的目录方法


-(NSString*)currentDirectoryPath 获取当前目录

-(BOOL)changeCurrentDirectoryPath:path 更改当前目录

-(BOOL)copyItemAtPath:from toPath:to error:err 复制目录结构

-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attributes:attr 创建一个新目录

-(BOOL)fileExistsAtPath:path isDirectory:(BOOL*)flag 测试文件是不是目录(flag中存储结果)

-(NSArray*)contentsOfDirectoryAtPath:path error:err 列出目录内容

-(NSDirectoryEnumerator*)enumeratorAtPath:path 枚举目录的内容

-(BOOL)removeItemAtPath:path error:err 删除空目录

-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移动一个目录

 

2、通过一段程序来对目录进行操作:

 

[cpp]  view plain copy print ?
 
    1. //  
    2. //  main.m  
    3. //  NSFileManager_02  
    4. //  
    5. //  Created by swinglife on 13-11-10.  
    6. //  Copyright (c) 2013年 swinglife. All rights reserved.  
    7. //  
    8.   
    9. #import <Foundation/Foundation.h>  
    10.   
    11. int main(int argc, const char * argv[])  
    12. {  
    13.   
    14.     @autoreleasepool {  
    15.         //文件目录  
    16.         NSString *dirName = @"testDir";  
    17.           
    18.         //创建NSFileManager实例  
    19.         NSFileManager *fm = [NSFileManager defaultManager];  
    20.           
    21.         //获取当前目录  
    22.         NSString *path = [fm currentDirectoryPath];  
    23.         NSLog(@"Path:%@",path);  
    24.           
    25.         //创建新目录  
    26.         [fm createDirectoryAtPath:dirName withIntermediateDirectories:YES attributes:nil error:NULL];  
    27.           
    28.         //重命名新的目录  
    29.         [fm moveItemAtPath:dirName toPath:@"newDir" error:NULL];  
    30.           
    31.         //更改当前目录到新的目录  
    32.         [fm changeCurrentDirectoryPath:@"newDir"];  
    33.           
    34.         //获取当前工作目录  
    35.         path = [fm currentDirectoryPath];  
    36.         NSLog(@"Path:%@",path);  
    37.           
    38.     }  
    39.     return 0;  
    40. }  

转载于:https://www.cnblogs.com/yulang314/p/3713433.html

相关文章:

  • 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)...
  • linux驱动编译常见错误记录
  • IT项目中存储设备的选型
  • 使用ASP.Net WebAPI构建REST服务(五)——客户端
  • CentOS Mahout部署
  • 软件设计的思想与哲学
  • VC中利用多线程技术实现线程之间的通信
  • 苹果平台上的媒体流播放技术HLS
  • 我的另外一个博客
  • Mod_Python中文文档
  • Radmin远程连接TMG
  • 自动化运维之 ~cobbler~
  • Hummer框架平台介绍
  • debian 7.4 安装配置
  • easy-ui 使用总结
  • 【Leetcode】101. 对称二叉树
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【EOS】Cleos基础
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 4. 路由到控制器 - Laravel从零开始教程
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript HTML DOM
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java小白进阶笔记(3)-初级面向对象
  • learning koa2.x
  • react 代码优化(一) ——事件处理
  • Redis中的lru算法实现
  • Tornado学习笔记(1)
  • 简单易用的leetcode开发测试工具(npm)
  • 我的zsh配置, 2019最新方案
  • 原生 js 实现移动端 Touch 滑动反弹
  • 原生js练习题---第五课
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Mac 上flink的安装与启动
  • ​flutter 代码混淆
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #《AI中文版》V3 第 1 章 概述
  • $.ajax()参数及用法
  • (+4)2.2UML建模图
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (七)理解angular中的module和injector,即依赖注入
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • ******之网络***——物理***
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net core 6.0 升8.0
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net分布式压力测试工具(Beetle.DT)
  • .NET命名规范和开发约定
  • .NET实现之(自动更新)
  • .NET文档生成工具ADB使用图文教程