iOS 文件学习笔记

文件操作

foundation 框架中利用文件系统对文件进行操作。

基本操作是由NSFileManager类提供的,主要功能如下:

  • 创建一个新文件
  • 文件中读取数据
  • 写入数据
  • 文件的重命名
  • 删除文件
  • 测试文件是否存在
  • 确定文件的大小以及其他属性
  • 复制文件
  • 测试两个文件是否相同

用NSFileHandle类,可以打开文件并对其进行读写操作。

  • 打开文件,执行读写操作
  • 在文件中查找指定位置
  • 从文件中读取指定书目的字节,或写入指定数目的字节数据

- (NSData *)contentsAtPath:(NSString *)path;

从一个文件中读取数据

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData
*)data attributes:(NSDictionary *)attr;

向文件中写入数据

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError
**)error

删除文件

- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString
*)dstPath error:(NSError **)error

移动文件

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString
*)dstPath error:(NSError **)error

复制文件

- (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString
*)path2;

比较两个文件内容是否相同

- (BOOL)fileExistsAtPath:(NSString *)path;

文件是否存在

- (BOOL)isReadableFileAtPath:(NSString *)path;

文件是否能够执行读操作

- (BOOL)isWritableFileAtPath:(NSString *)path;

文件是否能执行写操作

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError
**)error

获取文件的属性

- (BOOL)setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString
*)path error:(NSError **)error

设置文件属性

每个路径都是NSString对象。

~用作用户主目录的缩写。

. 表示当前目录

..表示父目录

NSFileManager 类的创建

<span style="font-family:Comic Sans MS;font-size:14px;">NSFileManager *fm = [NSFileManager defaultManager];
</span>

NSData类

操作文件时需要频繁的将数据读入一个缓存区,NSData类来创建设置缓存区。

常见的NSFileManager目录方法

@property (readonly,
copy) NSString *currentDirectoryPath;

获取当前目录

- (BOOL)changeCurrentDirectoryPath:(NSString *)path;

更改当前目录

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString
*)dstPath error:(NSError **)error

复制文件

- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates
attributes:(NSDictionary *)attributes error:(NSError **)error

创建一个目录并设置属性

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL
*)isDirectory;

测试路径是否问目录

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError
**)error

列出目录内容

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError
**)error

删除目录

- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString
*)dstPath error:(NSError **)error

移动或重命名目录

- (NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path;

枚举目录内容,如果还是目录会继续深入

使用路径:NSPathUtilities.h

NSPathUtilities.h包含了NSString的函数的分类扩展,它能够操作路径名。应该尽可能的使用这些函数。

常用的路径工具方法

+ (NSString *)pathWithComponents:(NSArray *)components;

根据组件中的元素构造路径

@property (readonly,
copy) NSArray *pathComponents;

析构路径,获得组成此路径的各个部分

@property (readonly,
copy) NSString *lastPathComponent;

获取路径的最后一个组成部分

@property (readonly,
copy) NSString *pathExtension;

从组件最后部分获取扩展名

- (NSString *)stringByAppendingPathComponent:(NSString *)str;

将str添加到现有路径的末尾

- (NSString *)stringByAppendingPathExtension:(NSString *)str;

将扩展名添加到末尾

@property (readonly,
copy) NSString *stringByDeletingLastPathComponent;

删除最后组成部分

@property (readonly,
copy) NSString *stringByDeletingPathExtension;

删除最后部分的扩展名

@property (readonly,
copy) NSString *stringByExpandingTildeInPath;

将字符串中的带字符扩展为主目录(~)

@property (readonly,
copy) NSString *stringByResolvingSymlinksInPath;

解析路径中的符号链接

@property (readonly,
copy) NSString *stringByStandardizingPath;

通过尝试解~ .  .. 和符号链接来标准化路径

使用NSProcessInfo类

NSProcessInfo类中包含一些方法,允许你设置或检索正在运行的应用程序(即进程)的各种类型的信息

NSProcessInfo类方法

+ (NSProcessInfo *)processInfo;

返回当前线程的信息

@property (readonly,
copy) NSArray *arguments;

以string对象数字的形式返回当前进程的参数

@property (readonly,
copy) NSDictionary *environment;

返回字典,描述当前环境变量

@property (readonly)
int processIdentifier;

返回进程表示符,它是操作系统赋予进程的唯一数字

@property (readonly,
copy) NSString *globallyUniqueString;

每次调用这个方法时,返回不同的单值字符串。可用这个字符串生成单值临时文件名

@property (readonly,
copy) NSString *hostName;

返回主机系统的名称

- (NSUInteger)operatingSystem

返回表示操作系统的数字

- (NSString *)operatingSystemName

返回操作系统的名称

@property (readonly,
copy) NSString *operatingSystemVersionString;

返回操作系统的当前版本

@property (copy)
NSString *processName;

将当前进程名称设置为name

基本的文件操作NSFileHandle

使用NSFileHandle类提供的方法,允许更有效地使用文件。

处理文件时经历三个步骤:

  1. 打开文件,并获取一个NSFileHandle对象,以便在后面的i/o操作中引用该文件。
  2. 对文件执行i/o操作。
  3. 关闭文件

常用的NSFileHandle方法

+ (instancetype)fileHandleForReadingAtPath:(NSString *)path;

打开一个文件准备读取

+ (instancetype)fileHandleForWritingAtPath:(NSString *)path;

打开一个文件准备写入

+ (instancetype)fileHandleForUpdatingAtPath:(NSString *)path;

打开一个文件准备更新(读写)

@property (readonly,
copy) NSData *availableData;

从设备或者通道返回可用的数据

- (NSData *)readDataToEndOfFile;

读取其余的数据直到文件末尾

- (NSData *)readDataOfLength:(NSUInteger)length;

从文件中读取指定bytes的内容

- (void)writeData:(NSData *)data;

将data写入文件

@property (readonly)
unsigned long
long offsetInFile;

获取当前文件的偏移量

- (void)seekToFileOffset:(unsigned
long long)offset;

设置当前文件的偏移量

- (unsigned
long long)seekToEndOfFile;

将当前文件的偏移量定位到文件的末尾

- (void)truncateFileAtOffset:(unsigned
long long)offset;

将文件的长度设置为offset字节

- (void)closeFile;

关闭文件

内容来自于《objective-cheng

时间: 2024-10-08 17:21:47

iOS 文件学习笔记的相关文章

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

IOS开发学习笔记--语音合成(科大讯飞)

      现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便.说到语音服务,Google和微软都提供过API接口,不过笔者要介绍的是国内的智能语音技术提供商---科大讯飞.之前看过一个比较Google.微软和科大讯飞语音识别引擎的博文(http://fqctyj.blog.163.com/blog/static/70843455201361955322797/),有兴趣可以去看看.笔者接触语音服务的时间也不长,对语音服务也不是很了解,但是拆解过科大讯飞的Dem

PHP操作XML文件学习笔记

原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作方式很多,这次学习的是通过DOMDocument进行操作,其他的操作方法可以参考 http://www.oschina.net/code/snippet_110138_4727 1.对XML文件的遍历 通过DOMDocument对于XML文件的操作的方法:首先要实例化一个DOMDocument类的对

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.

IOS开发学习笔记(2)-----UIButton 详解

1. [代码][C/C++]代码     //这里创建一个圆角矩形的按钮    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //    能够定义的button类型有以下6种,//    typedef enum {//        UIButtonTypeCustom = 0,          自定义风格//        UIButtonTypeRoundedRect,        

iOS Swift学习笔记 Core Data (一)Hello Core Data

正在学习swift的Core Data,做个笔记,顺便分享源码 这个实例是一个很简单的Table,通过右上角的Add按钮可以添加新的用户名.数据存储在CoreData中,这样,才不会丢失. 通过这个例子可以学会: 使用Xcode的model编辑器创建数据对象的model data. 添加新的记录到CoreData中 从CoreData中获取记录集合 显示记录到table view中 这个例子十分简单,还有很多可以改进的地方,比如,每次要操作managed class都需要访问AppDelegat