OC--文件管理

-----------文件管理----------------  

  1、文件管理类

文件管理类:这是一个类,专门用来管理文件的        (通过单例)

NSFileManager *manager = [NSFileManager defaultManager];

NSString *path = @"/Users/Desktop/共享资料";

//通过error可以得知是否成功获得目录里面内容  error:这个参数要写对象指针的地址

NSError *error = nil;

//获得目录下的文件内容  注意:1只能获取一层,2.要给全路径

NSArray *array1 = [manager contentsOfDirectoryAtPath:path error:&error];

//找后缀名为rtf的文件名

for (NSString *name in array1) {

if ([name hasSuffix:@".rtf"]) {

NSLog(@"%@",name);

}

}

//方法二

//取文件的扩展名

for (NSString *name in array1) {

NSString *str = [name pathExtension];

NSLog(@"%@",str);

}

  //取路径的各个部分

NSArray *comArr = [path pathComponents];

  //取当前目录下的所有文件

//获取当前目录下面所有的文件(当前目录的文件及子文件夹内的文件) 可以获取多层  注意:应该是全路径

NSArray *array2 = [manager subpathsOfDirectoryAtPath:path error:nil];    

  2、创建一个文件

NSString *path = @"/Users/Desktop/共享资料";

     第一个参数:文件的路径

第二个参数:文件的内容

第三个参数:文件的属性,如果为空,那就是默认的属性

//创建的文件名最好是新的,如果与原来的名字重名,就会将其覆盖

BOOL isSuc = [manager createFileAtPath:path contents:nil attributes:nil];

  //获取当前文件的属性

NSDictionary *dic = [manager attributesOfItemAtPath:path error:nil];

//创建路径

/**

第一个:要创建的路径

第二个:当为NO时,如果新创建的路径中间增加了原来没有的部分,就会不允许创建  当为YES时,会自动的允许增加,并创建

*/

  NSString *path1 = @"/Users/Desktop/共享资料/good/";

BOOL isSuc1 = [manager createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];

  3、文件的移动、删除、拷贝

   BOOL isSuc1 = [manager copyItemAtPath:path1 toPath:path2 error:nil];  //拷贝

BOOL isSuc2 = [manager moveItemAtPath:path3 toPath:path4 error:nil];  // 移动

BOOL isSuc3 = [manager removeItemAtPath:path4 error:nil];  //删除

-----------NSData--------

   NSData :表示二进制的数据  ---原因:存储,传输的数据都是二进制的。

NSString *string = @"study";

//字符串转为NSData类型

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

//NSData类型转为字符串型

NSString *newString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

------打开文件----------

  oc打开方法:   文件句柄(NSFileHandle) :通过文件句柄操作有关文件内容的事情。

//三种方式:只读,只写,读写

//只读方式打开文件

//1.创建句柄

//NSFileHandle *handle = [[NSFileHandle alloc]init];

//文件的路径

NSString *path3 = @"/Users/Desktop/方法列表.rtf";

NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path3];

if (handle) {            NSLog(@"文件存在");        }else{            NSLog(@"不存在");        }

//只写方式打开文件

NSFileHandle *handle2 = [NSFileHandle fileHandleForWritingAtPath:path3];

if (handle2) {            NSLog(@"文件存在");        }else{            NSLog(@"不存在");        }

//读写方式打开文件

NSFileHandle *handle3 = [NSFileHandle fileHandleForUpdatingAtPath:path3];

if (handle3) {            NSLog(@"文件存在");        }else{            NSLog(@"不存在");        }

  ---读文件

NSFileHandle *handle = [NSFileHandle fileHandleForUpdatingAtPath:path3];

  //2.第一次读:从开始读length长度的字符

NSData *data1 = [handle readDataOfLength:10];

NSLog(@"%@",[[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding]);

//第二次读:以上一次的结尾为开始,读取10个字符

NSData *data2 = [handle readDataOfLength:10];

NSLog(@"%@",[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding]);

//第三次读 从上一次结束一直读到末尾

NSData *data3 = [handle readDataToEndOfFile];

NSLog(@"%@",[[NSString alloc]initWithData:data3 encoding:NSUTF8StringEncoding]);

清空文件

[handle truncateFileAtOffset:0];

   回到文件的开始(或者某个位置)

[handle seekToFileOffset:0];

只能回到开始

[handle offsetInFile];

到结尾

[handle seekToEndOfFile];

关闭文件(可省略)

[handle closeFile];

  ---写文件

注意:为了防止将原来的内容覆盖掉,所以1.要先到文件内容的末尾 2.开始写(除非你想要覆盖原内容)

//到内容的末尾

[handle seekToEndOfFile];

NSData *data = [@"our story" dataUsingEncoding:NSUTF8StringEncoding];

//写数据  注意:将数据写入缓存

[handle writeData:data];

//将数据写入磁盘

[handle synchronizeFile];

//关闭文件(可以省略)

[handle closeFile];

时间: 2024-11-10 14:01:19

OC--文件管理的相关文章

oc 文件管理NSFileManager,文件读写NSFileHandle ,设计一个文件管理类将一个文件复制到另一个文件,由于文件过大要求每次复制100长度,通过NSFileHandle 来操作,并

设计一个文件管理类将一个文件复制到另一个文件,由于文件过大要求每次复制100长度,通过NSFileHandle来操作,并通过代理模式打印出当前的赋值进度百分比 main.m #import <Foundation/Foundation.h> #import "FileMaker.h" int main(int argc,const char * argv[]) { @autoreleasepool { NSString * fromPath = [NSHomeDirecto

项目功能大全,让你的项目一天搞定(给新手们一点干货)

在互联网中心工作了好久一直很忙,好不容易有些时间,今天有人问我如何开始写一个项目,不禁回忆起自己写第一个项目的时候,到现在,突然感觉自己写的好多都是在重复,有些感想,特此写下这篇文章,给想入这行的新手们一些参考 1.写项目之前首先我们要确定需求,明确项目需要实现哪些功能(吐槽下:好多项目的大部分功能都是一样的) 2,美工,后台啥的我都直不一一说了情况都不一样 废话不说了直接开写程序 很重要(1)首先我们要确定明确开发需要的框架,一个好的框架可以让我们轻松很多 框架可以自己写,也可以从网上找,多对

[OC Foundation框架 - 23] 文件管理

A. 目录管理 1 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 2 3 // 1.获取文件属性 4 NSString *path = @"/Users/hellovoidworld/desktop/oc/test20141121.txt"; 5 NSFileManager *manager = [NSFileManagerdefaultManager]; // 单例模式 6 NSDictionary *att

OC基础 文件管理

OC基础  文件管理 1.文件管理类NSFileManager对象的创建: NSFileManager *fm = [NSFileManager defaultManager]; 2.文件操作: (1)遍历查看目录下的文件: a.遍历查看目录下的文件:contentsOfDirectorAtPath:(NSString *)path error:(NSError **)error: b.深度遍历,子目录也遍历:subPathsOfDirectorAtPath:(NSString *)path e

我的OC成长之路(文件管理)

注意: 措施名称 描述 -(NSData *)contentsAtPath:path 从path所代表的文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr 将数据写入文件 -(BOOL)removeFileAtPath:path handler:handler 将path所代表的文件删除 -(BOOL)movePath:from toPath:to handler:handler 移动或者重命名文件,t

024-Foundation框架(下)-OC笔记

学习目标 1.[理解]NSDictionary 2.[了解]NSDictionary的常用方法 3.[掌握]NSDictionary的遍历 4.[理解]NSMutableDictionary 5.[了解]NSFileManager 6.[了解]Foundation常用结构体 7.[了解]NSNumber 8.[了解]NSValue 9.[了解]NSDate 10.[了解]集合的内存管理 11.[了解]copy和mutableCopy 12.[理解]单例模式 一.NSDictionary NSAr

Snail—OC学习之文件操作(非读写)

#import <Foundation/Foundation.h> //宏定义一个文件夹的路径信息 #define path @"/Users/XXX/Desktop/Snail" //宏定义一个文件的路径 #define filePath @"/Users/XXX/Desktop/Snail/Snail3/Snail.txt" int main(int argc, const char * argv[]) { @autoreleasepool { //

IOS阶段学习第17天笔记(OC中文件的操作)

IOS学习(OC语言)知识点整理 一.单例模式 1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象, 不管实例化单例对象多少次,只有一个对象存在,这个对象是全局的,能够被整个应用程序共享,访问 2)使用单例模式时使用类提供的类方法获取单例对象,尽量不要用alloc init的方法获取单例对象 3)单例类提供类方法获取单例对象时类方法一般以sharedXX/standedXX/defaultXX开头 实例代码: #import "Plan

OC 知识点回顾

/* 字符串: NSString  不可变字符串  字符串对象的内容不能修改,字符串的指针可以改变 NSMutableString 可变字符串   可以修改字符串对象的内容,继承自NSString ,具有所有的方法 */ 1.创建对象,实例方法和类方法 NSMutableString *mStr=[[NSMutableString alloc]initWithString:@"Hello World"]; 2.将不可变字符串转换为可变字符串 NSMutableString *mStr2