文件操作

#import <Foundation/Foundation.h>

#define PATH @"/Users/student/Andrew/XCODE_OC/week2/1.txt"


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

{


    @autoreleasepool {

        

        /***************************/

        /*     OC -week2-day4      */

        /*  ===================    */

        /*        文件操作          */

        /*  ===================    */

        /***************************/

        

        

        //文件操作,分为对文件本身操作和文件内容的操作。


        

        /***************************/

        /*      NSFileManager      */

        /*  ---------------------  */

        /*     对文件本身进行操作     */

        /*  ---------------------  */

        /***************************/

        

//        NSError *error=nil;//装错误信息的指针

//        

//        NSFileManager *manager=[NSFileManager defaultManager];

//        

//        /*********************/

//        /*  查看一个目录下得内容

//        /*********************/

//        //【浅度遍历】查看

//        NSArray *array=[manager contentsOfDirectoryAtPath:PATH error:&error];//当出现错误时,系统会动将错误信息装入到error指针中,即错误信息,不是程序员来编写的。

//        

//        if (error) {

//            //发生错误

//            NSLog(@"%@",error);

//        }else

//        {

//            for (NSString* str in array) {

//                 NSLog(@"%@",str);

//            }

//           

//        }

//        

//        //【深度遍历】查看

//        NSError *error1=nil;//装错误信息的指针

//        NSArray *array1=[manager subpathsOfDirectoryAtPath:PATH error:&error1];

//        if (error1) {

//            //发生错误

//            NSLog(@"%@",error1);

//        }else

//        {

//            for (NSString* str in array1) {

//                NSLog(@"%@",str);

//            }

//            

//        }

//

//        /*********************/

//        /*  创建目录

//        /*********************/

//        

//        NSError *error2=nil;//装错误信息的指针

//        

//        [manager createDirectoryAtPath:[PATH stringByAppendingPathComponent:@"测试文件创建目录"] withIntermediateDirectories:YES attributes:nil error:&error2];

//        //第一个参数是路径

//        //第二个参数表示是否携带中间目录,YES,缺少中间目录会自动创建,NO,缺少中间目录会创建失败。

//        //第三个参数是文件的属性,默认填写nil

//        //第四个参数是存储错误信息的指针地址

//        

//        

//        

//        if (error2) {

//            //发生错误

//            NSLog(@"%@",error2);

//        }else

//        {

//            NSLog(@"创建目录成功");

//        }

//

//        

//        /*********************/

//        /*  创建文件

//        /*********************/

//

//        

//        //任何数据都能转成NSData

//        NSData *data=[@"阳光明媚" dataUsingEncoding:NSUTF8StringEncoding];

//        

//        BOOL flag=[manager createFileAtPath:[PATH stringByAppendingPathComponent:@"测试文件创建目录1"]  contents:data attributes:nil];

//        

//        //注意  第一个参数需要 指明文件路径和文件名

//        

//        if (flag) {

//            NSLog(@"创建文件成功!");

//        }

//        else

//        {

//            NSLog(@"创建文件失败");

//        }

//        

//        

//        /*********************/

//        /*  删除文件(目录)

//        /*********************/

//        

///*

//        NSError *error5=nil;

//        

//        [manager removeItemAtPath:[PATH stringByAppendingPathComponent:@"测试文件创建目录"]  error:&error5];

//        

//        if (error5) {

//            //发生错误

//            NSLog(@"%@",error5);

//        }else

//        {

//            NSLog(@"删除文件成功");

//        }

//        

//*/

//        

//        /*********************/

//        /*  拷贝文件(目录)-- 复制

//        /*********************/

//        

//        /*

//         

//           注意!!!

//         

//         移动,拷贝的目标路径一定要指明移动或拷贝后的的文件名

//         

//         例如:文件源路径 /user/student/And/1.txt

//              文件指定路径 /user/student/And/TXT/"1.txt"   一定要指明文件(文件夹)的名字,

//         

//         */

//        

//        NSError *error6=nil;

//        [manager copyItemAtPath:[PATH stringByAppendingPathComponent:@"测试文件创建目录1"] toPath:[PATH stringByAppendingPathComponent:@"测试文件创建目录2"] error:&error6];

//        

//        if (error6) {

//            //发生错误

//            NSLog(@"%@",error6);

//        }else

//        {

//            NSLog(@"拷贝文件成功");

//        }

//

//        

//        /*

//         

//         剩下还有其他的对文件本身操作的方法,可以查询文件操作的API文档

//         

//         */

//        

//        

        

        

        /***************************/

        /*      NSFileHandle       */

        /*  ---------------------  */

        /*     对文件里内容进行操作   */

        /*  ---------------------  */

        /***************************/

        

        

        

        //打开文件,生成只读的文件句柄

        NSFileHandle *fh=[NSFileHandle fileHandleForReadingAtPath:PATH];//只读方式打开已经存在的文件,文件定 位到起始位置)

        /*

         + fileHandleForWritingAtPath: (只写方式打开已经存在的文件,文件定 位到起始位置)

         + fileHandleForUpdatingAtPath:(读写方式打开已经存在的文件,文件定 位到起始位置)

         */

        

        

        //句柄fh就是文件(硬盘)在内存中的体现(或者叫代表),对句柄进行操作,就是对硬盘中的文件进行操作

        

        

        //读取文件

        

        //01 一读到低

       // NSData *data=[fh readDataToEndOfFile];

        

        

        

        //读取指定字节数

        NSData *data1=[fh readDataOfLength:13];

        

        //转换为nsstring

        NSString *str=[[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str);

        

        [str release];

        

        

        

        

        

        

        

        

        

    }

    return 0;

}


你可能感兴趣的:(文件操作)