使用文件

来源:互联网 发布:采购软件哪个好? 编辑:程序博客网 时间:2024/04/29 14:42

使用文件

        Foundation框架允许你利用文件对文件或目录执行基本操作。这些基本操作是由NSFileManager类提供。

一、管理文件和目录:NSFileManager

1、NSFileManager类:

1>、简介:对于NSFileManager类,文件或目录是使用文件路径名唯一的标识。每个路径名都是一个NSString对象,它既可以是相对路径名,也可以是完全路径名。

2>NSFileManager类的功能:

    • 创建一个新文件
    • 从现有文件读取数据
    • 将数据写入
    • 重命名文件
    • 删除文件
    • 测试文件是否存在
    • 确定文件的大小及其他属性
    • 复制文件
    • 测试两个文件的内容是不相同
    • 注:上述多数操作也可以直接对目录进行,另一个重要特性就是链接文件的能力。

3>、创建NSFileManager对象:通过向类发送一条defaultManager消息创建,如:

NSFileManager *fm;

fm = [NSFileManager defaultManager];

4>、属性字典:属性字典包括各种信息,如文件的所有者、文件大小、文件的创建日期等。属性字典还允许指定要创建的文件的权限,以便获取或者更改现有文件的信息。

5>、常用的NSFileManager方法:

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

2)-(BOOL)creatsFileAtPath:path contents:(BOOL) data attributs: attr                                    向一个文件写入数据

3)-(BOOL)removeFileAtPath: path handler: handler                                                               删除一个文件

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

5)-(BOOL)changeFileAttributes: attr atPath: path                                                                  更改文件属性

(更多方法请参见《常见的NSFileManager方法》)

2、使用NSData类

1>NSData类:FoundationNSData类提供了一个简单的方式来设置缓冲区,将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件。

2>、分类:可分为不变的缓冲区(使用NSData类)和可变的缓冲区(使用NSMutableData类)。

3>、使用方法,如:

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

{

NSAutoreleasepool *pool=[[NSAutoreleasepool alloc]init];

NSFileManager *fm;

NSData *fileData;

fm = [NSFileManager defaultManager];

fileData = [fm contentsAtPath: @”newfile2”];

if(fileData == nil) {

NSLog( @ ”File read failed: “ );

return 1;

}

[pool drain];

return 0;

}

3、使用目录

1>NSFileManager类:NSFileManager类提供了处理目录的方法。

    注:大多数方法和用于普通文件的方法相同

2>、常用目录方法:

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

2)-(BOOL)createDirectoryAtPath:path attributs: attr          创建一个新目录

3)-(NSArray *)directoryContensAtPath: path                列出目录内容

4)-(BOOL)removeFileAtPath: path handler: handler          删除空目录

(更多方法请参见《常见的NSFileManager方法》)

4、枚举目录中的内容

1>、枚举方法:使用enumeratotAtPath: 方法或者directoryContentsAtPath: 方法,都可以完成枚举过程。

2>enumeratorAtPath: 方法,一次可以枚举指定目录中的每个文件,默认情况下,如果其中一个文件本身为目录,那么也会递归枚举它的内容。

      注:可通过向枚举对象发送一条skipDescendant消息,可以动态地阻止递归过程,从而不再枚举目录中的内容。

3>directoryContentsAtPath: 方法,可以枚举指定目录的内容,并在一个数组中返回文件列表。如果这个目录中的任何文件本身是个目录,这个方法并不递归枚举它的内容。

4>示例程序代码

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

{

NSAutoreleasepool *pool = [[NSAutoreleasepool alloc] inti];

NSString *path;

NSFileManager *fm;

NSDirectoryEnumerator *dirEnum;

NSArray *dirArray;

fm = [NSFileManager defaultManager];

path = [fm currentDirectoryPath];

dirEnum = [fm enumeratorAtPath: path];

NSLog( @ “Contents of %@ : “,path];

While((path = [dirEnum nextObject) !=nil)

NSLog( @ “ %@ “ , path);

dirArray = [fm directoryContentsAtPath: [fm currentDirectoryPath ]];

NSLog( @ “ %@ “ ,path);

[pool drain];

return 0;

}

二、使用路径:NSPathUtilities.h

1、路径操作:

            NSPathUtilities.h包含了NSString的函数和分类扩展,它允许你操作路径名。应该尽可能地使用这些函数,以便使程序更能独立于文件系统结构以及特定文件和目录的位置。

2、路径名:

      路径名分为相对路径名和完全路径名。相对路径名是相对于当前目录的路径名;完全路径名也称为绝对路径名,以斜线 开始。斜线实际上就是一个目录,称为根目录。这个特殊的代字符(~)用作用户主目录的缩写。

3、路径获取:

      可使用方法和函数来获取当前目录的路径名、用户的主上当以及用来创建临时文件的目录。

           注:在程序中,应尽量避免使用硬编码的路径名。

4、常用方法如下:

1)+(NSString *)pathWithComponents: components    根据components中的元素构造有效路径

2)-(NSArray *)pathComponents                析构路径,获得组成此路径的各个地方

3)-(NSString *)lastPathComponent              提取路径的最后一个组成部分

3)-(NSString *)stringByDeletingLastPathComponent   删除路径的最后一个组成部分

(更多方法请参见《NSPathUtilities.h常用路径工具、函数和方法》)

5、复制文件和使用NSProcessInfo类

1>、命令行工具命令:

      Copy from-file tofile

NSFileManagercopyPath: toPath: handler: 方法不同命令行工具允许to-file是目录名,并允许重写其内容。

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

3>NSProcessInfo类常用方法:

1)、+(NSProcessInfo *)processInfo        返回当前进程信息

2)-(NSArray *)arguments              NSString对象数字的形式返回当前进程参数

3)-(NSString *)processName            返回当前正在执行的进程名称

(更多方法请参见《NSProcessInfo、NSFileHandle常用方法》)

三、基本文件操作:NSFielHandle

1、NSFileHandle类:

NSFIleHandle类提供的方法,允许更有效地使用文件。可以打开文件,并对其执行多次读写操作。

2、NSFileHandle类的功能如下:

  • 打开一个文件,执行读、写或更新(读写)操作。
  • 在文件中查找指定位置。
  • 从文件中读取特定数目的字节,或将特定数目的字节写入文件中。

3、处理文件一般步骤:

1>、打开文件,并获取一个NSFileHandle对象,以便后面的I/O操作中引用该文件。

2>、对打开的文件执行I/O

3>、关闭文件。

4、NSFileHandle常用方法

1)+(NSFileHandle *)fileHandleForReadingAtPath: path    打开一个文件准备读取

2)+(NSFileHandle *)fileHandleForWritingAtPath: path    打开一个文件准备写入

3)+(NSFileHandle *)fileHandleForUpdatingAtPath: path   打开一个文件准备更新

4)-(NSData *)availableData                          从设备或者通道返回可用的数据

(更多方法请参见《NSProcessInfo、NSFileHandle常用方法》)

5、NSFileHandle标准输入、输出、错误和空设备方法。

     格式为:fileHandleWithDevice,其中Device可以是StandardInputStandardOuputStandardErrorNullDevice

     注:FileHandle类没有创建文件的功能,必须使用FileManager方法来创建文件。

原创粉丝点击