美文网首页以后备用技术
iOS文件管理系统NSFileManager使用详解

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

作者: lhg_serven | 来源:发表于2017-12-19 17:47 被阅读372次

    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:

    相关文章

      网友评论

        本文标题:iOS文件管理系统NSFileManager使用详解

        本文链接:https://www.haomeiwen.com/subject/yejiwxtx.html