NSFileManager管理文件和目录

>相对路径:不以斜线开头的路径都是相对路径。比如,abc.m代表的就是当前路径吓得abc.m文件,再如:codes/Test.m代表当前路径下codes目录下的Test.m文件。相对路径要以“当前路径”为基础路径,随着当前路径的不同,同一个相对路径实际代表的文件可能发生变化,在终端窗口输入pwd命令,即可看到当前路径

>绝对路径:以斜线(代表根目录)开头的路径就是绝对路径,绝对路径是唯一的,他代表的文件或者目录总是固定的。比如:/User/abc,该目录代表更目录下Uses目录下的abc子目录。

除此之外,在Mac OS X 中还包括如下几个特殊的路径。
1、~:代表当前用户的Home目录。比如,当前用户为abc,那么“~”就代表/Users/abc;还可以写成~abc。
2、.:代表当前目录
3、..:代表当前了目录的上一级目录



1、访问文件属性和内容:

//
//  main.m
//  NSFileManager
//
//  Created by xxt-imac on 16/2/3.
//  Copyright © 2016年 xxt-imac. All rights reserved.
//

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        
        //访问文件属性和内容
        NSFileManager *fm = [NSFileManager defaultManager];
//      将输出1   说明为真
        NSLog(@"NSFileManager是否存在:%d",[fm fileExistsAtPath:@"NSFileManager"]);
        
        BOOL isDir;
        NSLog(@"NSFileManager:是否存在%d",[fm fileExistsAtPath:@"NSFileManager" isDirectory:&isDir]);
        //将会输出0 说明为假
        NSLog(@"NSFileManager是否为目录:%d",isDir);
        
        //将会输出1
        NSLog(@"NSFileManager是可读文件:%d",[fm isReadableFileAtPath:@"NSFileManager"]);
        
        //将会输出1
        NSLog(@"NSFileManager是否为可写文件:%d",[fm isWritableFileAtPath:@"NSFileManager"]);
        
        //将会输出0
        NSLog(@"NSFileManager是否为可执行性文件:%d",[fm isExecutableFileAtPath:@"NSFileManager"]);
        
        //将会输出1
        
        NSLog(@"NSFileManager是否为可删除文件:%d",[fm isDeletableFileAtPath:@"NSFileManager"]);
        
        //获取NSFileManagerTest.m文件所在的路径
        NSArray *array = [fm componentsToDisplayForPath:@"NSFileManager"];
        NSLog(@"--NSFileManagerTest.m所在路径的完整路径组件为:--");
        for (NSObject * ele in array) {
            NSLog(@"%@,",ele);
        }
        
        //获取文件的相关属性
        NSDictionary *attrs = [fm attributesOfItemAtPath:@"NSFileManager" error:nil];
        
        //获取文件的属性的详情
        NSLog(@"NSFileManager的创建时间:%@",[attrs fileCreationDate]);
        NSLog(@"NSFileManager的属主账户:%@",[attrs fileOwnerAccountName]);
        NSLog(@"NSFileManager:的文件大小%llu",[attrs fileSize]);
        
        //直接获取文件内容
        NSData *data = [fm contentsAtPath:@"NSFileManager"];
        //直接将NSdata的数据用UTF-8的格式转换字符串
        NSString *content = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"----------输出文件内容-----");
        NSLog(@"%@",content);
        
    }
    
    return 0;
}
输出:

2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否存在:1
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager:是否存在1
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为目录:0
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是可读文件:1
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可写文件:1
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可执行性文件:1
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可删除文件:1
2016-02-03 09:55:37.197 NSFileManager[1074:422794] --NSFileManagerTest.m所在路径的完整路径组件为:--
2016-02-03 09:55:37.198 NSFileManager[1074:422794] Macintosh HD,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] 用户,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] xxt,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] 资源库,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] Developer,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] Xcode,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] DerivedData,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] NSFileManager-fszedtoibnvnrablwjwjlukdpkfx,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] Build,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] Products,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] Debug,
2016-02-03 09:55:37.198 NSFileManager[1074:422794] NSFileManager,
2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager的创建时间:2016-02-03 01:55:33 +0000
2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager的属主账户:xxt
2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager:的文件大小23984
2016-02-03 09:55:37.199 NSFileManager[1074:422794] ----------输出文件内容-----
2016-02-03 09:55:37.199 NSFileManager[1074:422794] (null)
Program ended with exit code: 0

2、创建,删除,移动,复制的操作

NSFileManager为创建,山粗,移动,复制文件或者目录提供了许多方法。有根据路径进行操作的,还有用URL进行操作的,这里我就拿路径举例子。

//创建目录
        [fm createDirectoryAtPath:@"lyx/abc"
            //该参数指定如果父目录不存在,则创建父目录
            withIntermediateDirectories:YES
            attributes:nil
            error:nil];
        
        NSString *contentt = @"我要好好学习";
        //创建一份文件
        [fm createFileAtPath:@"hahahah.txt" contents:[contentt dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
        //复制一份新文件
        [fm copyItemAtPath:@"hahahah.txt" toPath:@"copy.txt" error:nil];

 3、查看目录包含的内容

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
    @autoreleasepool {

        NSFileManager *fm = [NSFileManager defaultManager];
        //获取指定目录下的所有文件和文件夹
        NSArray *array = [fm contentsOfDirectoryAtPath:@"." error:nil];
        for (NSString * item in array) {
            NSLog(@"=%@=",item);
        }
        
        //获取指定目录下所有文件和文件夹对应的枚举器
        NSDirectoryEnumerator *dirEnum = [fm enumeratorAtPath:@"."];
        NSString *file;
        //枚举dirEnum中包含的每个文件
        while (file = [dirEnum nextObject]) {
            //如果该文件的文件名是以.m结尾
            if ([[file pathExtension] isEqualToString:@"m"]) {
                //直接读取文件内容
                NSData *data = [fm contentsAtPath:file ];
                //直接将NSData的数据用UTF-8的格式转换字符串
                NSString *content = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
                NSLog(@"----------------输出文件内容---------------");
                NSLog(@"%@",content);
            }
        }
        //获取当前目录下的所有子目录
//        NSArray *subArr = [fm subpathsOfDirectoryAtPath:@"." error:nil];
        //这两个方法基本一样,所以留一个就行
        NSArray *subArr = [fm subpathsAtPath:@"."];
        for (NSString *item in subArr) {
            NSLog(@"%@",item);
        }
        
    }
    
    return 0;
}


你可能感兴趣的:(ios,文件管理,NSFileManager)