iOS fileManager

1.拿到沙盒路径

(1)

[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

(2)

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSDocumentDirectory是枚举,可以拿到不同的目录

(3)

NSTemporaryDirectory(); 获得temp文件夹

2.创建实例:path都是全路径

NSFileManager *fileManager = [NSFileManager defaultManager];

1)创建文件夹 [fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];

path是全路径:在document下创建了一个asd的文件夹

NSString *path = [NSString stringWithFormat:@"%@/%@",paths,firstObject,@"asd"];

2)创建文件:[fileManager createFileAtPath:path contents:data attributes:nil];

或 NSData 的

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;

3)取得一个目录下得所有文件名:(如上面的path)可用

NSArray *file = [fileManager subpathsOfDirectoryAtPath: path error:nil];

NSArray *files = [fileManager subpathsAtPath: path ];

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

4)读取某个文件:

NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路径的文件名

或直接用NSData 的类方法:

NSData *data = [NSData dataWithContentOfPath:myFilePath];

5)字符串写入文件:

[str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

[NSString stringWithContentsOfFile...];

6)移动文件:

if ([fileManager moveItemAtPath:filePath toPath:filePath2 error:&error] != YES)

7)删除文件:

if ([fileManager removeItemAtPath:filePath2 error:&error] != YES)

8)判断是否是文件夹:

BOOL isDir = NO;

[fileManager fileExistsAtPath:path isDirectory:(&isDir)];

if (isDir) { ...}

/===========================

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:

你可能感兴趣的:(iOS fileManager)