• OC文件操作(2)


    NSFileManager 文件管理器完成文件的创建、移动、拷贝等管理操作
    1.查询文件和目录
     OC中查询路径下的目录主要分为浅度遍历和深度遍历。
     浅度遍历
     NSFileManager * manager = [NSFileManager defaultManager];//创建文件管理器,+方法
     NSError * error = nil; //存数错误信息
     NSArray * array = [manager contentsOfDirectoryAtPath:@"/tmp" error:&error];
     //查询目录“/tmp”下的文件和目录,此函数返回值类型为NSArray *
     这种查询方法,只看一级目录,只看所查目录,不看子目录
     深度遍历
     NSArray * array = [manager subpathsOfDirectoryAtPath: @"/tmp" error: &error];
     这种方法查看所查目录和其所有子目录下的文件
    2.创建目录
     [manager createDirectoryAtPath:@"./1/2" withIntermediateDirectories:YES attributes:nil error:&error];
     //第一个参数指目录创建的位置,这里”./”,为当前目录,指程序所在目录
     //第二个参数,是否创建中间目录,意思为我们目的创建2目录,若1无的话,先创建1,再创建2
     //第三个,指目录的属性,其权限等东西,我们可以设为nil暂时不考虑
    3.创建文件
     [manager createFileAtPath:@"./hello/world/1.txt" contents:nil attributes:nil];//创建一个名为1.txt的文件
     //第二个参数,指以什么内容创建,nil为空文件
     //第三个参数,文件的亚属性,我们这里不考虑,nil设置
     //此函数返回值为BOOL型,YES创建成功,NO失败
    4.拷贝目录或文件
     [manager copyItemAtPath:@"./hello/world" toPath:@"./world" error:&error];
     //拷贝目录或文件,拷贝目录时,会把目录下的文件和子目录都拷走
     //第二个参数,必须写上拷过来之后的重命名
     //第一个参数,必须是一个存在的目录或文件,第二个参数必须是一个不存在的目录或文件
     //这程序表示,hello下的world拷贝到当前目录,改名为world
    5.移动/剪切目录和文件
     [manager moveItemAtPath:@"/tmp/dir1" toPath:@"./dir1" error:&error];//需注意的地方,与拷贝类似
    6.删除目录和文件
     [manager removeItemAtPath:@"./dir1" error:&error];//与移动类似,只是没有了目标位置
    7.判断文件是否存在
     [manager fileExistsAtPath:@"./1.txt"];//返回值为BOOL,YES为存在
     NSFileHandle 文件句柄  文件的读写修改操作
     对文件内容进行操作,我们需要一个新的类NSData来帮助我们。NSData可以创建一个用来存储数据的对象,进而我们对文件内容进行操作。
    1.创建含有内容的文件
     NSString * str = @”Hello World”;
     NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
     NSFileManager * manager = [NSFileManager defaultManager];
     [manager creatFileAtPath:@”./helloworld” contents:data attributes:nil];
     //如果第二个参数不是nil,就会在创建文件的同时,将data内容写入文件
    2.添加内容到已有的文件中
     NSFileHandle * handle = [NSFileHandle fileHandleForWritingAtPath:@”./helloworld”];  //只写方式打开
     [handle writeData:data];  //写入data数据
     想要写入的数据,转为data,再写到文件中去。
     handle = [NSFileHandle fileHandleForReading AtPath:@”./helloworld”];//只读方式打开
     handle = [NSFileHandle fileHandleForUpdating AtPath:@”./helloworld”];//以读写的方式打开
     这面的三种方式,均能写入文件内容,但是我们会发现,再次执行后,都会覆盖上次写入的内容。
    3.追加内容到文件
     与C语言文件管理不同的是,OC中没有追加的打开方式。OC中解决问题的方式,其实也很简单,就是将文件指针移到文件尾,然后再执行写入data操作,这样就能完成追加。
     [handle seekToEndOfFile];//指针定位在文件尾,打开后执行这一步,再写入数据,可完成追加。
    4.读取文件内容
     读取文件内容有很多种方式,每种方式根据不同需要,可起到很好的效果。
    (1)不打开文件,直接读取文件内容
      NSData * data = [NSData dataWithContentsOfFile:@”./1.txt”];
      NSData对象data将保存一个普通的C字符串,我们使用data输出时,使用%s,输出就能看到我们读出的内容。使用%@输出的话,我们得到的是一串ASCII码值。
      NSLog(@”%@”,(char * )[data bytes]);//强转一下再打印。
    (2)打开文件,再读取
      NSFileHandle * handle = [NSFileHandle FileHandleForReadindAtPath:@”./1.txt”];
      NSData * data = [handle readDataOfToEndOfFile];//读到文件尾,data接收内容
      NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//将data内容转入字符串
      我们也可以实现文件的分段读取,避免文件过大,内存不够的情况
      [handle readDataOfLength:6];//读取六个字符的内容
      配合循环可以读取文件的全部内容。
      [handle seekToFileOfSet:0];//指针定位在文件头
    (2)直接读取文件内容到字符串
      NSString * str = [NSString stringWithContentOfFile:@”./1.txt” encoding:NSUTF8StringEncoding error:&error];//以文件内容生成一字符串,读取全部内容
      [str writeToFile:@”./2.txt” atomically:no encoding:NSUTF8String Encoding error:&error];//将字符串内容写入到文件中

    本文出自 “CoderToDeveloper” 博客,请务必保留此出处http://rongchengfei.blog.51cto.com/6269699/1090236

  • 相关阅读:
    某个牛人做WINDOWS系统文件详解
    常用ASP脚本程序集锦
    LINUX基础:文件安全与权限
    proftpd+mysql+quota
    apache2.0.49tomcat5.0.19jk2建立virtualHost
    URL Redirection(转) Anny
    顶级域名后缀列表(转) Anny
    \u4E00\u9FA5意义 Anny
    How to POST Form Data Using Ruby(转) Anny
    How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转) Anny
  • 原文地址:https://www.cnblogs.com/daojiao/p/4034882.html
Copyright © 2020-2023  润新知