zoukankan      html  css  js  c++  java
  • ios NSFileManager和NSFileHandle(附:获取文件大小 )

    //file
    文件操作
    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 %@ ",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];
    }

     
  • 相关阅读:
    Ubuntu adb devices :???????????? no permissions (verify udev rules) 解决方法
    ubuntu 关闭显示器的命令
    ubuntu android studio kvm
    ubuntu 14.04版本更改文件夹背景色为草绿色
    ubuntu 创建桌面快捷方式
    Ubuntu 如何更改用户密码
    ubuntu 14.04 返回到经典桌面方法
    ubuntu 信使(iptux) 创建桌面快捷方式
    Eclipse failed to get the required ADT version number from the sdk
    Eclipse '<>' operator is not allowed for source level below 1.7
  • 原文地址:https://www.cnblogs.com/shidaying/p/3851723.html
Copyright © 2011-2022 走看看