iOS文件管理系统NSFileManager使用详解

1,找到自己的程序的目录: NSHomeDirectory() ,目录结构为:
    ---Documents/
    ---"YourAppName.app"
    ---Library/
    ---自己创建的文件夹 或 "自己创建的文件"
    ---tmp/
所以要找到自己程序的Documents文件夹,可以使用[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
也可以使用:
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *string=[paths objectAtIndex:0];
两者功能应该一样。

2,文件一些主要操作可以通过NSFileManage 来操作,可以通过 [NSFileManger defaultManger] 得到它得实例。

3,使用[aNSString stringByAppendingPathCompnent:aNSString] 来创建文件路径

4,tmp 目录我们可以在里面写入一些程序运行时需要用得数据,里面写入得数据在程序退出后会没有。
可以通过NSTemporaryDirectory();获得其路径。

5,NSFileManager的一些相关操作:
1)创建文件夹:
 NSString *myDirectory = [documentDirectory stringByAppendingPathComponent:@"test"];
     BOOL ok = [fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:&error];
2)取得一个目录下得所有文件名:(如上面的myDirectory)可用
NSArray *file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil];


NSArray *files = [fileManager subpathsAtPath: myDirectory ];

NSArray *files=[fileManager  contentsOfDirectoryAtPath:documentDirectory error:&error];

3)读取某个文件:
NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路径的文件名
或直接用NSData 的类方法:
NSData *data = [NSData dataWithContentOfPath:myFilePath];


4)保存某个文件:
可以用 NSFileManager的
- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
或 NSData 的
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;

5)字符串写入文件:
[str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
[NSString stringWithContentsOfFile...];

6)移动文件:
if ([fileMgr moveItemAtPath:filePath toPath:filePath2 error:&error] != YES)

7)删除文件:
if ([fileMgr removeItemAtPath:filePath2 error:&error] != YES)

8)判断是否是文件夹:
BOOL isDir = NO;
[fileManager fileExistsAtPath:path isDirectory:(&isDir)];
 if (isDir) { ...}

9)以下代码用于获取本机上的文件资源或图片
获取文本:
NSFileManager *fileManager=[NSFileManager defaultManager];
NSData *data=[fileManager contentsAtPath:@"/Developer/Documentation/wxWidgets/docs/lgpl.txt"];
NSString *string=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);
获取图片:
NSData *myData=[fileManager contentsAtPath:@"/Users/ruby/Desktop/Photo1.jpg"];
UIImage *myImage=[UIImage imageWithData:myData];

imageView.image=myImage;
 



//===========================
NSFileManager Class Reference:
概述:
NSFileManager类支持NSURL和NSString作为文件或文件夹的路径。
如果你正在移动、拷贝、连接或删除文件或文件夹,你可以使用一个代理连同file manager一起管理这些操作。代理的任务是确认操作和决定是否继续--当错误发生时。在Mac OS X v10.7以后,代理必须遵守 NSFileManagerDelegate协议。
在iOS5.0以后和Mac OS X v10.7以后,NSFileManager包括了管理存储在云端的items的方法。标记为云存储的文件和文件夹被同步到iCloud。item在一个位置的更改会在同步时 are propagated to all other locations。
线程考虑:
NSFileManager可以安全地在多个线程中调用。然而,如果你使用一个delegate来接收move,copy,remove,and link操作的通知,你应该
创建一个唯一的file manager 对象的实例,指定你的代理到这个对象,并使用这个file manager来初始化你的操作。
任务:
1)创建一个File Manager:
- init   如果你打算使用delegate,你应该使用init方法创建一个fileManager
+defaultManager 
2)发现文件夹内容:
– contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:
– contentsOfDirectoryAtPath:error:
– enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:
– enumeratorAtPath:
– mountedVolumeURLsIncludingResourceValuesForKeys:options:
– subpathsOfDirectoryAtPath:error:
– subpathsAtPath:
3)创建和删除items:
    – createDirectoryAtURL:withIntermediateDirectories:attributes:error:
    – createDirectoryAtPath:withIntermediateDirectories:attributes:error:
    – createFileAtPath:contents:attributes:
    – removeItemAtURL:error:
    – removeItemAtPath:error:
    – replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:

4)移动和拷贝 Items

    – copyItemAtURL:toURL:error:
    – copyItemAtPath:toPath:error:
    – moveItemAtURL:toURL:error:
    – moveItemAtPath:toPath:error:
5)Determining Access to Files

    – fileExistsAtPath:
    – fileExistsAtPath:isDirectory:
    – isReadableFileAtPath:
    – isWritableFileAtPath:
    – isExecutableFileAtPath:
    – isDeletableFileAtPath:

6)Getting and Setting Attributes

    – componentsToDisplayForPath:
    – displayNameAtPath:
    – attributesOfItemAtPath:error:
    – attributesOfFileSystemForPath:error:
    – setAttributes:ofItemAtPath:error:

7)Getting and Comparing File Contents

    – contentsAtPath:
    – contentsEqualAtPath:andPath:

8)Converting File Paths to Strings

    – fileSystemRepresentationWithPath:
    – stringWithFileSystemRepresentation:length:

9)Managing the Delegate

    – setDelegate:
    – delegate

10)Managing the Current Directory

    – changeCurrentDirectoryPath:
    – currentDirectoryPath


NSFileManagerDelegate Protocol Reference:


Moving an Item

    – fileManager:shouldMoveItemAtURL:toURL:
    – fileManager:shouldMoveItemAtPath:toPath:
    – fileManager:shouldProceedAfterError:movingItemAtURL:toURL:
    – fileManager:shouldProceedAfterError:movingItemAtPath:toPath:

Copying an Item

    – fileManager:shouldCopyItemAtURL:toURL:
    – fileManager:shouldCopyItemAtPath:toPath:
    – fileManager:shouldProceedAfterError:copyingItemAtURL:toURL:
    – fileManager:shouldProceedAfterError:copyingItemAtPath:toPath:

Removing an Item

    – fileManager:shouldRemoveItemAtURL:
    – fileManager:shouldRemoveItemAtPath:
    – fileManager:shouldProceedAfterError:removingItemAtURL:
    – fileManager:shouldProceedAfterError:removingItemAtPath:

Linking an Item

    – fileManager:shouldLinkItemAtURL:toURL:
    – fileManager:shouldLinkItemAtPath:toPath:
    – fileManager:shouldProceedAfterError:linkingItemAtURL:toURL:
    – fileManager:shouldProceedAfterError:linkingItemAtPath:toPath:

转载于:https://www.cnblogs.com/ioslps/p/3844106.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值