NSFileManager管理文件和目录

来源:互联网 发布:交换机端口流量监控 编辑:程序博客网 时间:2024/05/18 03:02

>相对路径:不以斜线开头的路径都是相对路径。比如,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是否存在:12016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager:是否存在12016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为目录:02016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是可读文件:12016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可写文件:12016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可执行性文件:12016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可删除文件:12016-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 +00002016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager的属主账户:xxt2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager:的文件大小239842016-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;}


3 0