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

    本文转载至:http://www.cnblogs.com/pengyingh/articles/2350345.html

    天牛 感谢原创作者的硕果

    //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];
    }

     
     
     
  • 相关阅读:
    如何将一个类改造为线程安全
    50行代码实现缓存,JAVA内存模型原理
    Qt 解压/压缩文件
    QT学习笔记—1
    在http编程的门口飞牛网自动下单,查单
    QList 排序
    Qt 打开指定的文件
    spoj 375 query on a tree 题解
    uva 11388 GCD LCM题解
    uva 1476 Error Curves 题解
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/3301202.html
Copyright © 2011-2022 走看看