文件本身操作NSManager

文件操作分两个部分:

1.对文件本身的操作,类:NSManager :提供方法让我们在程序中对文件本体进行操作。我们可以对文件查看,删除,复制,拷贝,创建······
2.对文件内容的操作,类:NSHandle

查看某个文件或文件夹下的目录

浅度遍历

我们只能看出文件或文件夹的名字,并不能知道文件或文件夹的内容

#import <Foundation/Foundation.h>
#define PATH @"/Users/apple/Desktop/文件"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建一个file manager的对象
        NSFileManager *fm=[NSFileManager defaultManager];
        //查看一个目录下有哪些文件或文件夹
        NSError *error=nil;
        NSArray *array=[fm contentsOfDirectoryAtPath:PATH error:&error];
        //第一个参数是文件的路径,第二个参数用于报错,指针地址
        //这个方法获得了文件和文件加的名字会把他们装入一个数组里,所以返回值是数组的地址
        if(error)
        {
            NSLog(@"%@",error);
            exit(-1);//如果出错,就退出程序
        }
        NSLog(@"%@",array);//如果成功,就打印输出文件和文件夹名
    }
    return 0;
}

输出内容为:

".DS_Store",
    ".git",
    "Person.h",
    "Person.m",
    "\U6587\U4ef6",
    "\U6587\U4ef6.xcodeproj"
深度遍历

深度遍历会输出文件或文件夹中的内容

NSArray *array=[fm subpathsOfDirectoryAtPath:PATH error:&error];
        if(error)
        {
            NSLog(@"%@",error);
            exit(-1);//如果出错,就退出程序
        }
        NSLog(@"%@",array);//如果成功,就打印输出文件和文件夹名

输出结果为:(太长了,我们取其一小部分展示)

".DS_Store",
    ".git",
    ".git/COMMIT_EDITMSG",
    ".git/config",
    ".git/description",
    ".git/HEAD",
    ".git/hooks",
    ".git/hooks/README.sample",
    ".git/index",
    ".git/info",
    ".git/info/exclude",
    ".git/logs",
    ".git/logs/HEAD",
    ".git/logs/refs",
    ".git/logs/refs/heads",
    ".git/logs/refs/heads/master",
    ".git/objects",
    ".git/objects/02",
    ".git/objects/02/b88cf973a4987b9c767360c0bcd5533a5e4b8e",
    ".git/objects/11",
    ".git/objects/11/eab4490955d5d7d657eac9e90c3f09fa3d26bb",
    ".git/objects/51",
    ".git/objects/51/328eca31c7088ae7d6f547ebe0a29bc0893411",
    ".git/objects/64",
    ".git/objects/64/7c3e4a8cee801d89d140b76d904dcb09d5a46d",
    ".git/objects/6f",

新建目录

使用方法:createDirectoryAtPath:(nonnull NSString ) withIntermediateDirectories:(BOOL) attributes:(nullable NSDictionary

    [fm createDirectoryAtPath:[NSString stringWithFormat:@"%@/SSL",PATH] withIntermediateDirectories:NO attributes:nil error:&error];
        //在指定路径下创建一个目录,第一个参数:以字符串形式输入文件名,逗号后为路径。第二个参数为YES(有中间路径)NO(无中间路径),例子中无中间路径。如果有中间目录,则为YES,如果本来没有,则系统会自己创建一个,也就是说,这里会创建两个目录,一个中间的目录,中间目录中又会创建一个新目录SSL出来。
        if(error)
        {
            NSLog(@"%@",error);
            exit(-1);//如果出错,就退出程序
        }

新建文件

[fm createFileAtPath:[NSString stringWithFormat:@"%@/SSL/file",PATH] contents:[@"hello" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
        //创建一个文件。第一个参数:创建路径,在SSL下创建一个名为file的文件;第二个参数为内容,因为要求NSData,所以输入字符串要用方法:dataUsingEncoding;第三个参数:填nil表示默认的属性

删除文件或目录

[fm removeItemAtPath:[NSString stringWithFormat:@"%@/SSL",PATH] error:&error];
        //方法removeItemAtPath文件和目录都可以删除.第一个参数:路径;第二个参数:报错
        if(error)
        {
            NSLog(@"%@",error);
            exit(-1);//如果出错,就退出程序
        }

拷贝文件或目录

[fm copyItemAtPath:[NSString stringWithFormat:@"%@/SSL",PATH] toPath:[NSString stringWithFormat:@"%@/SSL2",PATH] error:&error];
         if(error)
         {
         NSLog(@"%@",error);
         exit(-1);//如果出错,就退出程序
         }
        //第一个参数:要复制的文件的名字目录,路径;第二个参数:复制成的文件名,路径;第三个参数:报错

剪切文件或目录

[fm moveItemAtPath:[NSString stringWithFormat:@"%@/SSL",PATH] toPath:[NSString stringWithFormat:@"%@/SSL2/SSL",PATH] error:&error];
        //第一个参数:要剪切的文件的名字目录,路径;第二个参数:剪切到的文件名,剪切成的文件名,路径;第三个参数:报错
        if(error)
        {
            NSLog(@"%@",error);
            exit(-1);//如果出错,就退出程序
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值