OC基础 文件管理

OC基础  文件管理

1.文件管理类NSFileManager对象的创建:

NSFileManager *fm = [NSFileManager defaultManager];

2.文件操作:

(1)遍历查看目录下的文件:

  a.遍历查看目录下的文件:contentsOfDirectorAtPath:(NSString *)path error:(NSError **)error;

  b.深度遍历,子目录也遍历:subPathsOfDirectorAtPath:(NSString *)path error:(NSError **)error;

(2)创建文件:createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary*)attar;

(3)创建目录:createDirectoryAtPath:(NSString *)path withIntermediateDirectories:

attributes:(NSDictionary *)attributes error:(NSError **)error

(4)拷贝文件/目录:copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dsPath error:  (NSError **)error;

(5)移动文件/目录:moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dsPath error:  (NSError **)error;

(6)删除文件/目录:removeItemAtPath:(NSString *)path error:(NSError **)error;

(7)获取文件属性:attributesOfItemAtPath:(NSString *)path error:(NSError **)error;

(8)判断文件是否存在:fileExistsAtPath:(NSString *)path;

测试:

#import <Foundation/Foundation.h>

#define PATH       @"/Users/hwt/Desktop/test"
#define FILEPATH   @"/Users/hwt/Desktop/test/1.txt"
#define NEWPATH    @"/Users/hwt/Desktop/test/test1"
#define TOPATH     @"/Users/hwt/Desktop/test/test2"
#define MOVEPATH   @"/Users/hwt/Desktop/test/test2/2.txt"
#define FILEPATH2  @"/Users/hwt/Desktop/test/2.txt"

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        //文件管理类对象的创建
        NSFileManager *fm = [NSFileManager defaultManager];
        NSError *error;
        //文件遍历
        //浅度遍历(只遍历当前路径下的文件)
        NSArray *array = [fm contentsOfDirectoryAtPath:PATH error:&error];
        NSLog(@"array = %@",array);

        //深度遍历(遍历当前文件夹以及自文件夹里面的所有内容)
        NSArray *array1 = [fm subpathsOfDirectoryAtPath:PATH error:&error];
        NSLog(@"array1 = %@",array1);

        NSString *str = @"你好";
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        //创建文件,并写入数据
        BOOL result = [fm createFileAtPath:FILEPATH contents:data attributes:nil];
        if (result) {
            NSLog(@"文件创建成功");
        }
        else {
            NSLog(@"文件创建失败");
        }

        //创建目录
        result = [fm createDirectoryAtPath:NEWPATH withIntermediateDirectories:YES attributes:nil error:&error];
        if (result) {
            NSLog(@"文件夹创建成功");
        }
        else {
            NSLog(@"文件夹创建失败");
        }

        //文件/目录拷贝
        result = [fm copyItemAtPath:NEWPATH toPath:TOPATH error:&error];
        if (result) {
            NSLog(@"文件拷贝成功");
        }
        else {
            NSLog(@"文件拷贝失败");
        }

        //文件/目录移动
        result = [fm moveItemAtPath:FILEPATH toPath:MOVEPATH error:&error];
        if (result) {
            NSLog(@"文件移动成功");
        }
        else {
            NSLog(@"文件移动失败");
        }

        //文件或目录删除
        result = [fm removeItemAtPath:TOPATH error:&error];
        if (result) {
            NSLog(@"文件删除成功");
        }
        else {
            NSLog(@"文件删除失败");
        }

        //获取文件属性
        NSDictionary *dic = [fm attributesOfItemAtPath:FILEPATH2 error:&error];
        NSLog(@"文件属性dic = %@",dic);

        //获取文件的大小
        unsigned long long filesize = [dic fileSize];
        NSLog(@"文件的大小filesize = %llu",filesize);

        //文件是否存在
        result = [fm fileExistsAtPath:FILEPATH2];
        if (result) {
            NSLog(@"文件存在");
        }
        else {
            NSLog(@"文件不存在");
        }

    }
    return 0;
}

测试结果:

补充:

文件句柄类NSFileHandle

我们知道,对文件的读写都需要用NSFileHandle打开文件,并且读取和写入的数据都是NSData类型的二进制数据,下面让我们来看一下。

1.打开文件的方法有三种:

(1)只读方式打开:fileHandleForReadingAtPath:(NSString *)path;

(2)只写方式打开:fileHandleForWritingAtPath:(NSString *)path;

(3)读写方式打开:fileHandleForUpdatingAtPath:(NSString *)path;

2.读指定长度的数据:readDataOfLength:(NSUinteger)length;

3.从当前偏移量读到文件末尾:readDataToEndOfFile;

4.设置文件的偏移量:seekToFileOffset:(unsigned long long)offset;

5.将文件偏移量定位到文件末尾:seekToEndOfFile;

6.将文件长度设置为offset:truncateFileAtOffset:(unsigned long long)offset;

7.追加写入文件:writeData:(NSData *)data;

8.将缓存区的内容立即同步到磁盘:synchronizeFile;

#import <Foundation/Foundation.h>

#define PATH @"/Users/hwt/Desktop/test/2.txt"

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        //以只读的方式打开文件
        NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:PATH];
        //以只写的方式打开文件
        NSFileHandle *fh1 = [NSFileHandle fileHandleForWritingAtPath:PATH];
        //以可读写的方式打开文件
        NSFileHandle *fh2 = [NSFileHandle fileHandleForUpdatingAtPath:PATH];

        //读取数据
        //默认情况,光标位置是0
        NSData *data =[fh2 readDataToEndOfFile];
        //光标位置丁文
        [fh2 seekToFileOffset:0];
        //从光标位置开始,读取指定长度的内容
        data = [fh2 readDataOfLength:1000];
        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"string = %@",string);

        NSString *str1 = @"你好,hello world";
        NSData *data1= [str1 dataUsingEncoding:NSUTF8StringEncoding];
        //将数据内容追加到缓存里
        [fh2 writeData:data1];
        //将缓存区的内容立即同步到文件中
        [fh2 synchronizeFile];

    }
    return 0;
}
时间: 2024-08-07 09:54:52

OC基础 文件管理的相关文章

OC基础-面向对象编程简介

OC语言特点: C语言的超集,可与C,C+混编,具有良好的兼容性. 具备完善的面向对象特征. 包含一个运行时系统. 类库丰富. 面向对象编程(OOP:Object Oriented Programming)简介: 常用语言:java,C#,C++ 特征:对象,类,封装,继承,多态 面向过程与面向对象区别: 前者以过程为中心实现函数,依次调用,以过程为中心. 分解问题组成的对象,协调对象间相互通信.以对象为中心. OC中类的定义: 使用对象完成程序. 先定义类,在创建对象,然后使用对象. 接口部分

OC基础01

搜索 "==>" 寻找标记 OC基础总结: Objective-C具有相当多的动态特征,如: " 动态类型 , 动态绑定 , 动态加载" ==> copy mutableCopy 浅复制: 在复制操作中,对于被复制的对象的每一层复制都是指针复制. 深复制: 在复制操作中,对于被复制的对象至少有一层是对象复制 完全复制: 在复制操作中,对于被复制的对象的每一层都是对象复制. 一般来讲: 浅复制复制引用对象的指针 深复制 复制引用对象的内容 retain &

四.OC基础--1.文档安装和方法重载,2.self和super&amp;static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&amp;私有方法,6.description方法

四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 3. 方法重载: 是指在一个类中定义多个同名的方法 在OC中没有重载 2.self和super&static, self和super: 1. self理解: 谁调用当前方法, self就代表谁. 比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法 在类方法中, self代表的

OC基础 可变字典与不可变字典的使用

OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"huang",@"name",@"30",@"age", nil]; NSLog(@"%@",

OC基础(23)

NSArray基本概念 NSArray 遍历 NSArray排序 NSArray文件读写 NSArray 与字符串 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30p

黑马程序员--oc基础第六篇

六. oc基础知识(内存管理下) 总结:内存管理代码规范 1.只要调用alloc那么就必须调用release: 2.set方法的代码部分 *基本数据类型直接赋值. *如果是oc对象类型 - (void) setCar:(Car *)car { if(_car!=car) { [_car release]; _car=[Car retain]; } } 3.dealloc 部分的代码规范 *一定要[super dealloc ]放在最后面. *对self(当前)所拥有的其他对象做一次release

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

iOS开发OC基础:OC属性的一些概念和基本使用

一.属性简介 //属性是OC2.0之后新出的一种语法,能让我们快速的生成setter以及getter方法,大大简化代码 二.如何定义一个属性 //@property 属性关键字,用来定义属性 //NSString * 属性的类型 //name 属性的名字. //@property 只是生成的setter以及getter方法的声明.@property NSString *name; 三.属性的使用注意事项//如果在.m文件中我们自己实现了setter以及getter方法,则编译器就不会再帮我们生成

iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握. expression:表达式assignable:赋值variable:变量redefinition:重复定义type:类型conflicting:冲突项invalid:无效的conversion:转换specifier:说明符indent:缩进operands:运算对象.操作数binary:二