objective-c文件操作

//

//  main.m

//  NsFileManager

//

//  Created by adairwang on 15/11/24.

//  Copyright © 2015 adairwang. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

int main(int argc, const char * argv[]) {

    

    @autoreleasepool {

    //运行前请将终端CD到程序目录删除目录和文件/Users/adairwang/library/developer/xcode/deriveddata/NsFileManager-hbigtepyeedukxegvtseppiutjmm/Build/Products/Debug

    //否则会提示相应数字错误。

        

    //创建一个文件名对象,通常可以设置为路径字符串

    NSString *fName=@"testfile";

        

    //设置文件内容对象,目前只涉及字符串和数字等,不涉及多媒体

    NSString *fileContent=@"\nThis is a test file with some data in it!\nHere is anther line of data.\nAnd a third; ";

    //将文件内容对象写入临时存储区

    NSData *fileData=[fileContent dataUsingEncoding:NSUTF8StringEncoding];

    //创建文件实例对象

    NSFileManager *fm;

    //创建文件属性对象

    NSDictionary *attr;

    NSString *dirName=@"testdir";

        

        

        

        fm = [NSFileManager defaultManager];

        //创建文件testfile

        [fm createFileAtPath:fName contents:fileData attributes:nil];

        //输出文件内容

        NSLog(@"%@",[NSString stringWithContentsOfFile:@"testfile" encoding:NSUTF8StringEncoding error:NULL]);

        

   

        //判断文件是否存在

        if([fm fileExistsAtPath:fName]==NO){

            

             NSLog(@"file doestn't exist!");

            return 1;

            }

        

    //创建一个副本

        if ([fm copyItemAtPath:fName toPath:@"newfile" error:NULL]==NO) {

            NSLog(@"file copy failed!");

            return 2;

        }

        

        

    //测试两个文件是否一致

        if ([fm contentsEqualAtPath:fName andPath:@"newfile"]==NO){

            NSLog(@"file are not equal!");

            return 3;

            }

    //重命名副本

        if ([fm moveItemAtPath:@"newfile" toPath:@"newfile2" error:NULL]==NO) {

            NSLog(@"file rename failed");

            return 4;

        }

    //获取newfile2的大小

        if ((attr = [fm attributesOfItemAtPath:@"newfile2" error:NULL])== nil) {

            NSLog(@"cloudn't get file attributes");

                       return 5;

        }

        NSLog(@"file size is %llu byte",[[attr objectForKey:NSFileSize] unsignedLongLongValue]);

 

 

    //最后删除原始文件

        if ([fm removeItemAtPath:fName error:NULL]==NO) {

            NSLog(@"file removal failed");

            return 6;

        }

    //显示新创建的文件内容

        NSLog(@"%@",[NSString stringWithContentsOfFile:@"newfile2" encoding:NSUTF8StringEncoding error:NULL]);

     

        

        

        //测试文件到写入和读取

        fileData =[fm contentsAtPath:@"newfile2"];

        if (fileData==nil) {

            NSLog(@"file read failed,no contents!");

            return 7;

        }

        

        if ([fm createFileAtPath:@"newfile3" contents:fileData attributes:nil]==NO) {

            NSLog(@"cloudnot create the copy!");

            return 8;

        }

        NSLog(@"file copy are successful!");

 

        

        

        //测试删除文件

        [fm removeItemAtPath:@"newfile2" error:NULL];

        [fm removeItemAtPath:@"newfile3" error:NULL];

        

        //显示文件当前路径

        NSString *path = [fm currentDirectoryPath];

        NSLog(@"path:%@",path);

        

        

        //创建新目录

        if([fm createDirectoryAtPath:dirName withIntermediateDirectories:YES attributes:nil error:NULL]==NO){

            NSLog(@"couldnot create directory");

            return 9;

        };

        

        //显示最新当前路径

        NSLog(@"path:%@",[fm currentDirectoryPath]);

        

        

        //重命名新的目录

        if([fm moveItemAtPath:dirName toPath:@"newDir" error:NULL]==NO){

            NSLog(@"directory rename failed!");

            return 10;

        };

        //更改当前目录到新的目录

        if([fm changeCurrentDirectoryPath:@"newDir"]==NO){

            NSLog(@"change directory failed!");

            return 11;

        };

        //显示最新当前路径

        NSLog(@"path:%@",[fm currentDirectoryPath]);

        //在新目录下创建文件并枚举目录路径

        [fm createFileAtPath:fName contents:fileData attributes:nil];

        

        NSDirectoryEnumerator *dirEnum;

        NSArray *dirArray;

        

        dirEnum =[fm enumeratorAtPath:path];

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

        while ((path =[dirEnum nextObject])!=nil) {

            NSLog(@"%@",path);

        }

        

        //另一种枚举目录的方法

            dirArray =[fm contentsOfDirectoryAtPath:[fm currentDirectoryPath] error:NULL];

            NSLog(@"contents using contentsofdirectoryAtpath:error:");

            for (path in dirArray) {

                NSLog(@"%@",path);

            }

            

        

        

        

      }

 

    return 0;

}

posted @ 2015-12-04 15:13  坛主  阅读(202)  评论(0编辑  收藏  举报