0
点赞
收藏
分享

微信扫一扫

NSFileManager 使用 详解

将NSString转成NSURL的API是fileURLWithPath,从NSURL转成NSString的API是path

    NSString *fileString = [[NSBundle mainBundle] pathForResource:@"ios" ofType:@"pdf"];
//    NSURL *fileUrl = [NSURL URLWithString:fileString];
    NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"ios" withExtension:@"pdf"];
    NSLog(@"the fileUrl is %@", fileUrl);
   NSURL *testFileUrl = [NSURL fileURLWithPath:fileString];
    NSLog(@"the file url is %@", testFileUrl);
    NSString *string1 = fileUrl.path;
    NSArray *array = fileUrl.pathComponents;
    NSString *string2 = fileUrl.parameterString;

文件操作
 
  

    NSFileManager  
  
 
  

    常见的NSFileManager文件的方法: 
  
 
  

    -(BOOL)contentsAtPath:path                从文件中读取数据 
  
 
  

    -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr      向一个文件写入数据 
  
 
  

    -(BOOL)removeFileAtPath: path handler: handler   删除一个文件 
  
 
  

    -(BOOL)movePath: from toPath: to handler: handler 重命名或移动一个文件(to可能已经存在) 
  
 
  

    -(BOOL)copyPath:from toPath:to handler: handler 复制文件 (to不能存在)  
  
 
  

    -(BOOL)contentsEqualAtPath:path1 andPath:path2    比较两个文件的内容  
  
 
  

    -(BOOL)fileExistsAtPath:path    测试文件是否存在  
  
 
  

    -(BOOL)isReadablefileAtPath:path 测试文件是否存在,且是否能执行读操作  
  
 
  

    -(BOOL)isWritablefileAtPath:path 测试文件是否存在,且是否能执行写操作  
  
 
  

    -(NSDictionary *)fileAttributesAtPath:path traverseLink:(BOOL)flag   获取文件的属性  
  
 
  

    -(BOOL)changeFileAttributes:attr atPath:path                        更改文件的属性  
  
 
  

      
  
 
  

    NSFileManager对象的创建 : 
  
 
  

        NSFileManager *fm; 
  
 
  

        fm = [NSFileManager defaultManager];  
  
 
  

    NSDictionary *attr =[fm fileAttributesAtPath: fname traverseLink: NO] ; //文件属性 
  
 
  

                 NSLog(@"file size is:%i bytes ",[[attr objectForKey:NSFileSize] intValue]); 
  
 
  

    NSData *data =[fm contentsAtPath:@"filename"];//文件内容 
  
 
  

      
  
 
  

      
  
 
  

    常见的NSFileManager目录的方法: 
  
 
  

    -(NSString *)currentDirectoryPath                      获取当前目录  
  
 
  

    -(BOOL)changeCurrentDirectoryPath:path                更改当前目录  
  
 
  

    -(BOOL)copyPath:from toPath:to handler:handler      复制目录结构,to不能已经存在  
  
 
  

    -(BOOL)createDirectoryAtPath:path attributes:attr    创建目录  
  
 
  

    -(BOOL)fileExistsAtPath:path isDirectory:(BOOL *)flag       测试文件是否为目录 (flag存储结构yes/no)  
  
 
  

    -(NSArray *)contentsOfDirectoryAtPath:path              列出目录的内容  
  
 
  

    -(NSDirectoryEnumerator *)enumeratorAtPath:path  枚举目录的内容  
  
 
  

    -(BOOL)removeFileAtPath:path handler:handler    删除空目录  
  
 
  

    -(BOOL)movePath:from toPath:to handler:handler    重命名或移动一个目录,to不能是已经存在的  
  
 
  

      
  
 
  

    path= [fm currentDirectoryPath] ; 
  
 
  

    NSArray *dirarray; 
  
 
  

    NSDirectoryEnumerator *direnu; 
  
 
  

      
  
 
  

    direnu = [fm enumeratorAtPath:path]; 
  
 
  

    NSLog(@"contents of %@\n",path); 
  
 
  

    BOOL flag; 
  
 
  

    while((path = [direnu nextObject])!=nil) 
  
 
  

    { 
  
 
  

                NSLog(@"%@ ",path); 
  
 
  

                [fm fileExistsAtPath:path isDirectory:&flag]; 
  
 
  

                if(flag == YES) 
  
 
  

                [direnu skipDescendents]; //跳过子目录  
  
 
  

    } 
  
 
  

    path= [fm currentDirectoryPath] ; 
  
 
  

    dirarray = [fm contentsOfDirectoryAtPath:path]; 
  
 
  

    NSLog(@"%@ ",dirarray); 
  
 
  

      
  
 
  

    常用路径工具函数 
  
 
  

    NSString * NSUserName(); 返回当前用户的登录名  
  
 
  

    NSString * NSFullUserName(); 返回当前用户的完整用户名  
  
 
  

    NSString * NSHomeDirectory(); 返回当前用户主目录的路径  
  
 
  

    NSString * NSHomeDirectoryForUser(); 返回用户user的主目录  
  
 
  

    NSString * NSTemporaryDirectory(); 返回可用于创建临时文件的路径目录  
  
 
  

      
  
 
  

    常用路径工具方法 
  
 
  

    -(NSString *) pathWithComponents:components                         根据components中元素构造有效路径  
  
 
  

    -(NSArray *)pathComponents                                          析构路径,获取路径的各个部分  
  
 
  

    -(NSString *)lastPathComponent                                       提取路径的最后一个组成部分  
  
 
  

    -(NSString *)pathExtension                                           路径扩展名  
  
 
  

    -(NSString *)stringByAppendingPathComponent:path                    将path添加到现有路径末尾  
  
 
  

    -(NSString *)stringByAppendingPathExtension:ext                     将拓展名添加的路径最后一个组成部分  
  
 
  

    -(NSString *)stringByDeletingPathComponent                           删除路径的最后一个部分  
  
 
  

    -(NSString *)stringByDeletingPathExtension                           删除路径的最后一个部分 的扩展名  
  
 
  

    -(NSString *)stringByExpandingTildeInPath                            将路径中的代字符扩展成用户主目录(~)或指定用户主目录(~user)  
  
 
  

    -(NSString *)stringByResolvingSymlinksInPath                         尝试解析路径中的符号链接  
  
 
  

    -(NSString *)stringByStandardizingPath                               通过尝试解析~、..、.、和符号链接来标准化路径  
  
 
  

    -  
  
 
  

    使用路径NSPathUtilities.h  
  
 
  

    tempdir = NSTemporaryDirectory(); 临时文件的目录名  
  
 
  

    path = [fm currentDirectoryPath]; 
  
 
  

    [path lastPathComponent]; 从路径中提取最后一个文件名  
  
 
  

    fullpath = [path stringByAppendingPathComponent:fname];将文件名附加到路劲的末尾  
  
 
  

    extenson = [fullpath pathExtension]; 路径名的文件扩展名  
  
 
  

    homedir = NSHomeDirectory();用户的主目录  
  
 
  

    component = [homedir pathComponents];  路径的每个部分  
  
 
  

      
  
 
  

    NSProcessInfo类:允许你设置或检索正在运行的应用程序的各种类型信息 
  
 
  

    (NSProcessInfo *)processInfo                                  返回当前进程的信息 
  
 
  

    -(NSArray*)arguments                                           以NSString对象数字的形式返回当前进程的参数 
  
 
  

    -(NSDictionary *)environment                                   返回变量/值对词典。描述当前的环境变量 
  
 
  

    -(int)processIdentity                                          返回进程标识 
  
 
  

    -(NSString *)processName                                       返回进程名称 
  
 
  

    -(NSString *)globallyUniqueString                              每次调用该方法都会返回不同的单值字符串,可以用这个字符串生成单值临时文件名    
  
 
  

    -(NSString *)hostname                                          返回主机系统的名称  
  
 
  

    -(unsigned int)operatingSystem                                 返回表示操作系统的数字  
  
 
  

    -(NSString *)operatingSystemName                                     返回操作系统名称  
  
 
  

    -(NSString *)operatingSystemVersionString                                     返回操作系统当前版本 
  
 
  

    -(void)setProcessName:(NSString *)name                                将当前进程名称设置为name  
  
 
  
 [fileList pathsMatchingExtensions:[NSArrayarrayWithObject:@"jpg"]];
 
  

    /// 
  
 
  

    基本文件操作NSFileHandle 
  
 
  

    常用NSFileHandle方法 
  
 
  

    (NSFileHandle *)fileHandleForReadingAtPath:path                        打开一个文件准备读取 
  
 
  

    (NSFileHandle *)fileHandleForWritingAtPath:path                        打开一个文件准备写入 
  
 
  

    (NSFileHandle *)fileHandleForUpdatingAtPath:path                        打开一个文件准备更新(读取和写入) 
  
 
  

    -(NSData *)availableData                                                  从设备或通道返回可用数据 
  
 
  

    -(NSData *)readDataToEndOfFile                                            读取其余的数据直到文件末尾(最多UINT_MAX字节) 
  
 
  

    -(NSData *)readDataOfLength:(unsigned int)bytes 从文件读取指定数目bytes的内容 
  
 
  

    -(void)writeData:data                  将data写入文件 
  
 
  

    -(unsigned long long) offsetInFile      获取当前文件的偏移量 
  
 
  

    -(void)seekToFileOffset:offset         设置当前文件的偏移量  
  
 
  

    -(unsigned long long) seekToEndOfFile      将当前文件的偏移量定位的文件末尾 
  
 
  

    -(void)truncateFileAtOffset:offset        将文件的长度设置为offset字节 
  
 
  

    -(void)closeFile                           关闭文件 
  
 
  

      
  
 
  
获取文件大小
 
  

      
  
 
  
 
   Using the C FILE type: 
    
   
int getFileSizeFromPath(char * path)
 {
      FILE * file;
      int fileSizeBytes = 0;
      file = fopen(path,"r");
      if(file>0){
          fseek(file, 0, SEEK_END);
          fileSizeBytes = ftell(file);
          fseek(file, 0, SEEK_SET);
          fclose(file);
      }
      return fileSizeBytes;
 }or in XCode use the NSFileManager:
 
    
   
NSFileManager * filemanager = [[NSFileManager alloc]init];
 if([filemanager fileExistsAtPath:[self getCompletePath] isDirectory:&isDirectory]){     NSDictionary * attributes = [filemanager attributesOfItemAtPath:[self getCompletePath] error:nil];
// file size
      NSNumber *theFileSize;
      if (theFileSize = [attributes objectForKey:NSFileSize])       _fileSize= [theFileSize intValue];
 }

举报

相关推荐

0 条评论