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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。