zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    U盘PE系统下安装WIN2003和WINXP的方法(非GHOST版)
    自己做U盘急救杀毒
    Windows Server 2003 SP2 企业版 ISO 下载 629M
    解决开机关机慢问题
    一般处理程序
    [转]iframe自适应高度详解(希望对大家有用)非常经典,非同凡响
    ie6下position fixed的失效bug
    php文件上传MAX_FILE_SIZE不起作用的问题
    IE6测试网页显示空白页面
    自己写的面向过程php验证码
  • 原文地址:https://www.cnblogs.com/daojiao/p/4034882.html
Copyright © 2011-2022 走看看